diff --git a/build/config.go b/build/config.go index dc1161c8d..b7ddc651d 100644 --- a/build/config.go +++ b/build/config.go @@ -15,6 +15,7 @@ var DefaultGenerationMethod string var DefaultGenerationURL string var LatestVersion string var WorkloadPath string +var AllVersions []string //NewConfig creates the configuration for creating components func NewConfig(version string) manifests.Config { @@ -37,11 +38,11 @@ func NewConfig(version string) manifests.Config { func init() { wd, _ := os.Getwd() WorkloadPath = filepath.Join(wd, "templates", "oam", "workloads") - versions, _ := utils.GetLatestReleaseTagsSorted("istio", "istio") - if len(versions) == 0 { + AllVersions, _ = utils.GetLatestReleaseTagsSorted("istio", "istio") + if len(AllVersions) == 0 { return } - LatestVersion = versions[len(versions)-1] + LatestVersion = AllVersions[len(AllVersions)-1] DefaultGenerationMethod = adapter.Manifests DefaultGenerationURL = "https://raw.githubusercontent.com/istio/istio/" + LatestVersion + "/manifests/charts/base/crds/crd-all.gen.yaml" } diff --git a/go.mod b/go.mod index 7e19238c5..4695c0271 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ replace ( require ( github.com/aspenmesh/istio-vet v0.0.0-20200806222806-9c8e9a962b9f github.com/layer5io/meshery-adapter-library v0.5.2 - github.com/layer5io/meshkit v0.5.1 + github.com/layer5io/meshkit v0.5.2 github.com/layer5io/service-mesh-performance v0.3.3 gopkg.in/yaml.v2 v2.4.0 istio.io/client-go v1.12.1 diff --git a/go.sum b/go.sum index f98ae5998..fdaca4760 100644 --- a/go.sum +++ b/go.sum @@ -608,6 +608,8 @@ github.com/layer5io/meshery-adapter-library v0.5.2 h1:xjXaIZc96oKxIOWpydsYz0CJoV github.com/layer5io/meshery-adapter-library v0.5.2/go.mod h1:OkeWQDI1r+TAvuJO7obHDjBkBcUWzWSftSHArg3afwY= github.com/layer5io/meshkit v0.5.1 h1:zF4PvtxpWhq7Lw3/ysqya03hMtu3cEqWejgBFyd0tWY= github.com/layer5io/meshkit v0.5.1/go.mod h1:2o6I6N7XmupMvJRb1gqlRBIf51GIUqwCzPCGarZxIRU= +github.com/layer5io/meshkit v0.5.2 h1:pTKQTHEIrLTEU8c9ScDXcFn5zjORvu83oeV50dY24N4= +github.com/layer5io/meshkit v0.5.2/go.mod h1:2o6I6N7XmupMvJRb1gqlRBIf51GIUqwCzPCGarZxIRU= github.com/layer5io/service-mesh-performance v0.3.2-0.20210122142912-a94e0658b021/go.mod h1:W153amv8aHAeIWxO7b7d7Vibt9RhaEVh4Uh+RG+BumQ= github.com/layer5io/service-mesh-performance v0.3.2/go.mod h1:W153amv8aHAeIWxO7b7d7Vibt9RhaEVh4Uh+RG+BumQ= github.com/layer5io/service-mesh-performance v0.3.3 h1:KtouYXg64y+G0soPJwDeB0sM6PXolBpkV6Ke15aqwmk= diff --git a/main.go b/main.go index 6e1bc0c07..802fddda3 100644 --- a/main.go +++ b/main.go @@ -198,11 +198,11 @@ func registerWorkloads(port string, log logger.Handler) { DirName: version, Config: build.NewConfig(version), }) - if err != nil { log.Info("Failed to generate components for version "+version, "ERR: ", err.Error()) return } + //The below log is checked in the workflows. If you change this log, reflect that change in the workflow where components are generated log.Info("Component creation completed for version ", version) diff --git a/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ad03e6a47 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d60baf3e0 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..82d918995 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d184d2de7 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..67a0a6c5f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e35036110 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c0fe33eb4 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a1e9edc12 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4cddadb4 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f134d9771 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6cd56af6c --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..50b6c7a93 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c5ec530a --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a2251b173 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f90dcb104 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c0e44a7a9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13ad28fef --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..682e65b10 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ee755a748 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4e123095f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d10e02182 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1762c5d2c --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2def95f6 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6318b5a01 --- /dev/null +++ b/templates/oam/workloads/1.10.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a1f888b00 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3385e715f --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e845e81e8 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a2bc9c25 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2049c1bd --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bea9374b5 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..11c55f3e2 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1c10d6473 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b0f06bdee --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f742a0c54 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..148a1dfd2 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ae470c419 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..829d6e7d9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8266029f --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7ce92be95 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fd60415b4 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0d120ed53 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d535d576f --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13e60bab6 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..36f6cd2c6 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2d81ee14 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b3cd7e01b --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c79d7ff5 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..55a7aa363 --- /dev/null +++ b/templates/oam/workloads/1.10.0-rc.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.10.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.10.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index a1aa62a83..000000000 --- a/templates/oam/workloads/1.10.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..537dbd406 --- /dev/null +++ b/templates/oam/workloads/1.10.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.10.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.10.0/destinationrule.istio_definition.json deleted file mode 100644 index 0ae6286a2..000000000 --- a/templates/oam/workloads/1.10.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f08eb66fc --- /dev/null +++ b/templates/oam/workloads/1.10.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7f299ff7e..000000000 --- a/templates/oam/workloads/1.10.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.10.0/envoyfilter.istio_definition.json deleted file mode 100644 index 13add5190..000000000 --- a/templates/oam/workloads/1.10.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba905c07b --- /dev/null +++ b/templates/oam/workloads/1.10.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.10.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/gateway.istio_definition.json b/templates/oam/workloads/1.10.0/gateway.istio_definition.json deleted file mode 100644 index 1c8dbcf00..000000000 --- a/templates/oam/workloads/1.10.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de7dabf2f --- /dev/null +++ b/templates/oam/workloads/1.10.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.10.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.10.0/peerauthentication.istio_definition.json deleted file mode 100644 index 07b849a66..000000000 --- a/templates/oam/workloads/1.10.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f3d0f4fc --- /dev/null +++ b/templates/oam/workloads/1.10.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.10.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.10.0/requestauthentication.istio_definition.json deleted file mode 100644 index ca3908c1b..000000000 --- a/templates/oam/workloads/1.10.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2765db53d --- /dev/null +++ b/templates/oam/workloads/1.10.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.10.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.10.0/serviceentry.istio_definition.json deleted file mode 100644 index 1d4cc8f06..000000000 --- a/templates/oam/workloads/1.10.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..21c5d85da --- /dev/null +++ b/templates/oam/workloads/1.10.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.10.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/sidecar.istio_definition.json b/templates/oam/workloads/1.10.0/sidecar.istio_definition.json deleted file mode 100644 index 23134eba9..000000000 --- a/templates/oam/workloads/1.10.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dcea78ad9 --- /dev/null +++ b/templates/oam/workloads/1.10.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7b5627d1d..000000000 --- a/templates/oam/workloads/1.10.0/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.0/telemetry.istio_definition.json b/templates/oam/workloads/1.10.0/telemetry.istio_definition.json deleted file mode 100644 index 2897ef2ae..000000000 --- a/templates/oam/workloads/1.10.0/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..be5f45c9b --- /dev/null +++ b/templates/oam/workloads/1.10.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.10.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.10.0/virtualservice.istio_definition.json deleted file mode 100644 index 08aa8306c..000000000 --- a/templates/oam/workloads/1.10.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ae7d98041 --- /dev/null +++ b/templates/oam/workloads/1.10.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.10.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.10.0/workloadentry.istio_definition.json deleted file mode 100644 index 1038ba219..000000000 --- a/templates/oam/workloads/1.10.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..757f118d5 --- /dev/null +++ b/templates/oam/workloads/1.10.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.10.0/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadgroup.istio_definition.json b/templates/oam/workloads/1.10.0/workloadgroup.istio_definition.json deleted file mode 100644 index ed479fb0f..000000000 --- a/templates/oam/workloads/1.10.0/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18a87b701 --- /dev/null +++ b/templates/oam/workloads/1.10.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.10.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.10.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index a9482d31f..000000000 --- a/templates/oam/workloads/1.10.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4efe60bbb --- /dev/null +++ b/templates/oam/workloads/1.10.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.10.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.10.1/destinationrule.istio_definition.json deleted file mode 100644 index 5935a1826..000000000 --- a/templates/oam/workloads/1.10.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..41b821708 --- /dev/null +++ b/templates/oam/workloads/1.10.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7f299ff7e..000000000 --- a/templates/oam/workloads/1.10.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.10.1/envoyfilter.istio_definition.json deleted file mode 100644 index 8e620b388..000000000 --- a/templates/oam/workloads/1.10.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..52b53cc24 --- /dev/null +++ b/templates/oam/workloads/1.10.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.10.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.1/gateway.istio_definition.json b/templates/oam/workloads/1.10.1/gateway.istio_definition.json deleted file mode 100644 index 6c55ff6eb..000000000 --- a/templates/oam/workloads/1.10.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..99571985f --- /dev/null +++ b/templates/oam/workloads/1.10.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.10.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.10.1/peerauthentication.istio_definition.json deleted file mode 100644 index 34551a17c..000000000 --- a/templates/oam/workloads/1.10.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51fb43cc7 --- /dev/null +++ b/templates/oam/workloads/1.10.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.10.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.10.1/requestauthentication.istio_definition.json deleted file mode 100644 index 690474522..000000000 --- a/templates/oam/workloads/1.10.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8d48cdf02 --- /dev/null +++ b/templates/oam/workloads/1.10.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.10.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.10.1/serviceentry.istio_definition.json deleted file mode 100644 index 1b0334a75..000000000 --- a/templates/oam/workloads/1.10.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..595c7b275 --- /dev/null +++ b/templates/oam/workloads/1.10.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.10.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/sidecar.istio_definition.json b/templates/oam/workloads/1.10.1/sidecar.istio_definition.json deleted file mode 100644 index 18a3ee53b..000000000 --- a/templates/oam/workloads/1.10.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..27e5e50f2 --- /dev/null +++ b/templates/oam/workloads/1.10.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7b5627d1d..000000000 --- a/templates/oam/workloads/1.10.1/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.1/telemetry.istio_definition.json b/templates/oam/workloads/1.10.1/telemetry.istio_definition.json deleted file mode 100644 index 3fba94b84..000000000 --- a/templates/oam/workloads/1.10.1/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aa016ed63 --- /dev/null +++ b/templates/oam/workloads/1.10.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.10.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.10.1/virtualservice.istio_definition.json deleted file mode 100644 index 745d5c3ff..000000000 --- a/templates/oam/workloads/1.10.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..db341fd3d --- /dev/null +++ b/templates/oam/workloads/1.10.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.10.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.10.1/workloadentry.istio_definition.json deleted file mode 100644 index d374ecbf7..000000000 --- a/templates/oam/workloads/1.10.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..954295c9d --- /dev/null +++ b/templates/oam/workloads/1.10.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.10.1/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadgroup.istio_definition.json b/templates/oam/workloads/1.10.1/workloadgroup.istio_definition.json deleted file mode 100644 index a9ee92c00..000000000 --- a/templates/oam/workloads/1.10.1/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7eac3fafe --- /dev/null +++ b/templates/oam/workloads/1.10.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.10.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.10.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index 83a46664b..000000000 --- a/templates/oam/workloads/1.10.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..19c9a23bd --- /dev/null +++ b/templates/oam/workloads/1.10.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.10.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.10.2/destinationrule.istio_definition.json deleted file mode 100644 index 82c83e277..000000000 --- a/templates/oam/workloads/1.10.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ab361361f --- /dev/null +++ b/templates/oam/workloads/1.10.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7f299ff7e..000000000 --- a/templates/oam/workloads/1.10.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.10.2/envoyfilter.istio_definition.json deleted file mode 100644 index 9a11c301d..000000000 --- a/templates/oam/workloads/1.10.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f569043df --- /dev/null +++ b/templates/oam/workloads/1.10.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.10.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.2/gateway.istio_definition.json b/templates/oam/workloads/1.10.2/gateway.istio_definition.json deleted file mode 100644 index 456caf549..000000000 --- a/templates/oam/workloads/1.10.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d39b8c054 --- /dev/null +++ b/templates/oam/workloads/1.10.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.10.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.10.2/peerauthentication.istio_definition.json deleted file mode 100644 index 3b3d57adb..000000000 --- a/templates/oam/workloads/1.10.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8fc8f53ad --- /dev/null +++ b/templates/oam/workloads/1.10.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.10.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.10.2/requestauthentication.istio_definition.json deleted file mode 100644 index 065da3ddf..000000000 --- a/templates/oam/workloads/1.10.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3270adacc --- /dev/null +++ b/templates/oam/workloads/1.10.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.10.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.10.2/serviceentry.istio_definition.json deleted file mode 100644 index e6130ed18..000000000 --- a/templates/oam/workloads/1.10.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..87983c7a2 --- /dev/null +++ b/templates/oam/workloads/1.10.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.10.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/sidecar.istio_definition.json b/templates/oam/workloads/1.10.2/sidecar.istio_definition.json deleted file mode 100644 index 9b376ebb6..000000000 --- a/templates/oam/workloads/1.10.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0072c4e13 --- /dev/null +++ b/templates/oam/workloads/1.10.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8ff5f7ef4..000000000 --- a/templates/oam/workloads/1.10.2/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/telemetry.istio_definition.json b/templates/oam/workloads/1.10.2/telemetry.istio_definition.json deleted file mode 100644 index 91f1efa2d..000000000 --- a/templates/oam/workloads/1.10.2/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4367f3b13 --- /dev/null +++ b/templates/oam/workloads/1.10.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.10.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.10.2/virtualservice.istio_definition.json deleted file mode 100644 index 02c1425f9..000000000 --- a/templates/oam/workloads/1.10.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..625774376 --- /dev/null +++ b/templates/oam/workloads/1.10.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.10.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.10.2/workloadentry.istio_definition.json deleted file mode 100644 index 9068fe849..000000000 --- a/templates/oam/workloads/1.10.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9b274dec3 --- /dev/null +++ b/templates/oam/workloads/1.10.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.10.2/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadgroup.istio_definition.json b/templates/oam/workloads/1.10.2/workloadgroup.istio_definition.json deleted file mode 100644 index 4e19e7c1b..000000000 --- a/templates/oam/workloads/1.10.2/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d28f4927e --- /dev/null +++ b/templates/oam/workloads/1.10.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.10.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.10.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index 5d69f3773..000000000 --- a/templates/oam/workloads/1.10.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3a879c696 --- /dev/null +++ b/templates/oam/workloads/1.10.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.10.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.10.3/destinationrule.istio_definition.json deleted file mode 100644 index 8de0f367d..000000000 --- a/templates/oam/workloads/1.10.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..25cae1c7f --- /dev/null +++ b/templates/oam/workloads/1.10.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7f299ff7e..000000000 --- a/templates/oam/workloads/1.10.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.10.3/envoyfilter.istio_definition.json deleted file mode 100644 index 547cbe5f0..000000000 --- a/templates/oam/workloads/1.10.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ac3df6fcd --- /dev/null +++ b/templates/oam/workloads/1.10.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.10.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.3/gateway.istio_definition.json b/templates/oam/workloads/1.10.3/gateway.istio_definition.json deleted file mode 100644 index dcbd83ca5..000000000 --- a/templates/oam/workloads/1.10.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e29a04e43 --- /dev/null +++ b/templates/oam/workloads/1.10.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.10.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.10.3/peerauthentication.istio_definition.json deleted file mode 100644 index 2ad682240..000000000 --- a/templates/oam/workloads/1.10.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a015005ea --- /dev/null +++ b/templates/oam/workloads/1.10.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.10.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.10.3/requestauthentication.istio_definition.json deleted file mode 100644 index 4f3942659..000000000 --- a/templates/oam/workloads/1.10.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..84f4935c4 --- /dev/null +++ b/templates/oam/workloads/1.10.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.10.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.10.3/serviceentry.istio_definition.json deleted file mode 100644 index ffe3c4367..000000000 --- a/templates/oam/workloads/1.10.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7279c32e8 --- /dev/null +++ b/templates/oam/workloads/1.10.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.10.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/sidecar.istio_definition.json b/templates/oam/workloads/1.10.3/sidecar.istio_definition.json deleted file mode 100644 index 7a1f170ae..000000000 --- a/templates/oam/workloads/1.10.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..964e77642 --- /dev/null +++ b/templates/oam/workloads/1.10.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8ff5f7ef4..000000000 --- a/templates/oam/workloads/1.10.3/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/telemetry.istio_definition.json b/templates/oam/workloads/1.10.3/telemetry.istio_definition.json deleted file mode 100644 index bef253ed1..000000000 --- a/templates/oam/workloads/1.10.3/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2e3755d45 --- /dev/null +++ b/templates/oam/workloads/1.10.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.10.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.10.3/virtualservice.istio_definition.json deleted file mode 100644 index 6488e25be..000000000 --- a/templates/oam/workloads/1.10.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f04b5875 --- /dev/null +++ b/templates/oam/workloads/1.10.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.10.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.10.3/workloadentry.istio_definition.json deleted file mode 100644 index f19dc4636..000000000 --- a/templates/oam/workloads/1.10.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5dccc0989 --- /dev/null +++ b/templates/oam/workloads/1.10.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.10.3/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadgroup.istio_definition.json b/templates/oam/workloads/1.10.3/workloadgroup.istio_definition.json deleted file mode 100644 index 9d667aa99..000000000 --- a/templates/oam/workloads/1.10.3/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a3daeaddf --- /dev/null +++ b/templates/oam/workloads/1.10.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.10.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.10.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index 2ba29bb80..000000000 --- a/templates/oam/workloads/1.10.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..664dea837 --- /dev/null +++ b/templates/oam/workloads/1.10.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.10.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.10.4/destinationrule.istio_definition.json deleted file mode 100644 index 70d9460ec..000000000 --- a/templates/oam/workloads/1.10.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5eb938a9 --- /dev/null +++ b/templates/oam/workloads/1.10.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7f299ff7e..000000000 --- a/templates/oam/workloads/1.10.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.10.4/envoyfilter.istio_definition.json deleted file mode 100644 index e90763f63..000000000 --- a/templates/oam/workloads/1.10.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e57dbf098 --- /dev/null +++ b/templates/oam/workloads/1.10.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.10.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.10.4/gateway.istio_definition.json b/templates/oam/workloads/1.10.4/gateway.istio_definition.json deleted file mode 100644 index bcb312c6c..000000000 --- a/templates/oam/workloads/1.10.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6239d5e07 --- /dev/null +++ b/templates/oam/workloads/1.10.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.10.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.10.4/peerauthentication.istio_definition.json deleted file mode 100644 index 5291d67cf..000000000 --- a/templates/oam/workloads/1.10.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ae38cfb6e --- /dev/null +++ b/templates/oam/workloads/1.10.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.10.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.10.4/requestauthentication.istio_definition.json deleted file mode 100644 index 5cb8b2184..000000000 --- a/templates/oam/workloads/1.10.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..454801a35 --- /dev/null +++ b/templates/oam/workloads/1.10.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.10.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.10.4/serviceentry.istio_definition.json deleted file mode 100644 index d651759fd..000000000 --- a/templates/oam/workloads/1.10.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba28decd3 --- /dev/null +++ b/templates/oam/workloads/1.10.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.10.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/sidecar.istio_definition.json b/templates/oam/workloads/1.10.4/sidecar.istio_definition.json deleted file mode 100644 index fc52dc010..000000000 --- a/templates/oam/workloads/1.10.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4b04799ee --- /dev/null +++ b/templates/oam/workloads/1.10.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8ff5f7ef4..000000000 --- a/templates/oam/workloads/1.10.4/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "format": "string", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/telemetry.istio_definition.json b/templates/oam/workloads/1.10.4/telemetry.istio_definition.json deleted file mode 100644 index e426da53e..000000000 --- a/templates/oam/workloads/1.10.4/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..62c764b13 --- /dev/null +++ b/templates/oam/workloads/1.10.4/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.10.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.10.4/virtualservice.istio_definition.json deleted file mode 100644 index 028917be2..000000000 --- a/templates/oam/workloads/1.10.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e7f281077 --- /dev/null +++ b/templates/oam/workloads/1.10.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8b087fd55 --- /dev/null +++ b/templates/oam/workloads/1.10.4/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.10.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.10.4/workloadentry.istio_definition.json deleted file mode 100644 index 8960bd8fe..000000000 --- a/templates/oam/workloads/1.10.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..01ba8d8d2 --- /dev/null +++ b/templates/oam/workloads/1.10.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.10.4/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadgroup.istio_definition.json b/templates/oam/workloads/1.10.4/workloadgroup.istio_definition.json deleted file mode 100644 index e8eb53836..000000000 --- a/templates/oam/workloads/1.10.4/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.10.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..67a8f0f32 --- /dev/null +++ b/templates/oam/workloads/1.10.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a08a3e15b --- /dev/null +++ b/templates/oam/workloads/1.10.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d4895d4cd --- /dev/null +++ b/templates/oam/workloads/1.10.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..43acb61b3 --- /dev/null +++ b/templates/oam/workloads/1.10.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d3cd49e19 --- /dev/null +++ b/templates/oam/workloads/1.10.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5792ec12d --- /dev/null +++ b/templates/oam/workloads/1.10.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..96888b73f --- /dev/null +++ b/templates/oam/workloads/1.10.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..23669f0d9 --- /dev/null +++ b/templates/oam/workloads/1.10.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a9ce941f1 --- /dev/null +++ b/templates/oam/workloads/1.10.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d25da2509 --- /dev/null +++ b/templates/oam/workloads/1.10.5/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ed85f24f3 --- /dev/null +++ b/templates/oam/workloads/1.10.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4a6053c39 --- /dev/null +++ b/templates/oam/workloads/1.10.5/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..62f68a1a0 --- /dev/null +++ b/templates/oam/workloads/1.10.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..efc1b96b4 --- /dev/null +++ b/templates/oam/workloads/1.10.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9628e041f --- /dev/null +++ b/templates/oam/workloads/1.10.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e24f9b5d --- /dev/null +++ b/templates/oam/workloads/1.10.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba37109a7 --- /dev/null +++ b/templates/oam/workloads/1.10.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2df49c7bd --- /dev/null +++ b/templates/oam/workloads/1.10.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3de4a1ff5 --- /dev/null +++ b/templates/oam/workloads/1.10.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1fdc013ac --- /dev/null +++ b/templates/oam/workloads/1.10.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8e1caae6 --- /dev/null +++ b/templates/oam/workloads/1.10.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..255f184fc --- /dev/null +++ b/templates/oam/workloads/1.10.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ee9b3ef0f --- /dev/null +++ b/templates/oam/workloads/1.10.6/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f8917115c --- /dev/null +++ b/templates/oam/workloads/1.10.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66401084f --- /dev/null +++ b/templates/oam/workloads/1.10.6/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..db3da1a07 --- /dev/null +++ b/templates/oam/workloads/1.10.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a120e3603 --- /dev/null +++ b/templates/oam/workloads/1.10.6/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.10.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b895769cf --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..54fdd7b56 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..96ff2ce6d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..436dff5d8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7370ce99d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7d8a03ce --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..160f78659 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1f1fa913a --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..857594114 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..711286374 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..778abf486 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d75ee527c --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9fb2d6735 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..549709000 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..986c0caaf --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1392a46b2 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3892e97fa --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..494a945fa --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4123323fb --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5d512813c --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c5e4bd49c --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..094287678 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3ef4477c4 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d1e8bc47f --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..10e4d8abe --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..236de9398 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d3d9ed66d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1f56dca02 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5619cd5b8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..14fc3ea0e --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0cb15b6bc --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2172c5c8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8136fffa8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f29cc7cd --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bc8440796 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7704df8a8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ac3db8f3a --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5653e59d3 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a64186091 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..767c15664 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9c041a1b --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9d2c6a6b2 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f89096fed --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b54890af2 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9092445fe --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2ee05c195 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..75b1aa01d --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..50f91ad64 --- /dev/null +++ b/templates/oam/workloads/1.11.0-beta.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-beta.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fe33be0d1 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e326f682b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66fe52967 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ea1d3e76d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..638f65715 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..468d5be34 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51d98d1f1 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..133bfac83 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..757d65909 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13dfcb230 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4855987b2 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ea370cef7 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd1f4f25b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b643dd701 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ab5570c61 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1c67099f8 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..352cf73ce --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9426b46e9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77f8f7b6d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f21d387c1 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b334bda86 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f117cfffe --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..535f1f212 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fb9dc4335 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..023e21c99 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..723b690c3 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7b58b754 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1686e2c01 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..31ac1cf45 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..23534ef12 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5a25520d3 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18bc2961c --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e40968f4 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c452dab4e --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..551b80e49 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..68a28854a --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9ce4f79f --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3dcd3796b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..273f15079 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1473aff6b --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e07fa7fa9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..654612585 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..17d0a5ce2 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8d296d35d --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5441ffd5 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e8e7c91bf --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7307f1ed7 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13684830a --- /dev/null +++ b/templates/oam/workloads/1.11.0-rc.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.11.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index 6b4e1eef6..000000000 --- a/templates/oam/workloads/1.11.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..49a86cbeb --- /dev/null +++ b/templates/oam/workloads/1.11.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45dd6a88e..000000000 --- a/templates/oam/workloads/1.11.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.0/destinationrule.istio_definition.json deleted file mode 100644 index c7b8efe09..000000000 --- a/templates/oam/workloads/1.11.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18d696698 --- /dev/null +++ b/templates/oam/workloads/1.11.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.11.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.0/envoyfilter.istio_definition.json deleted file mode 100644 index 4907ff955..000000000 --- a/templates/oam/workloads/1.11.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9dfde0e01 --- /dev/null +++ b/templates/oam/workloads/1.11.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 174c0ae38..000000000 --- a/templates/oam/workloads/1.11.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.0/gateway.istio_definition.json b/templates/oam/workloads/1.11.0/gateway.istio_definition.json deleted file mode 100644 index 73fa78301..000000000 --- a/templates/oam/workloads/1.11.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13f041038 --- /dev/null +++ b/templates/oam/workloads/1.11.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.11.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.0/peerauthentication.istio_definition.json deleted file mode 100644 index e7810d863..000000000 --- a/templates/oam/workloads/1.11.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fb7a3f3da --- /dev/null +++ b/templates/oam/workloads/1.11.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index ea340d6e6..000000000 --- a/templates/oam/workloads/1.11.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.0/requestauthentication.istio_definition.json deleted file mode 100644 index 1c037f744..000000000 --- a/templates/oam/workloads/1.11.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..413a783e6 --- /dev/null +++ b/templates/oam/workloads/1.11.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3cc89ebc5..000000000 --- a/templates/oam/workloads/1.11.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.0/serviceentry.istio_definition.json deleted file mode 100644 index d0cc03410..000000000 --- a/templates/oam/workloads/1.11.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..947a405f7 --- /dev/null +++ b/templates/oam/workloads/1.11.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6bed0c025..000000000 --- a/templates/oam/workloads/1.11.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/sidecar.istio_definition.json b/templates/oam/workloads/1.11.0/sidecar.istio_definition.json deleted file mode 100644 index 606a2a329..000000000 --- a/templates/oam/workloads/1.11.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..021ffcb83 --- /dev/null +++ b/templates/oam/workloads/1.11.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 850987187..000000000 --- a/templates/oam/workloads/1.11.0/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.0/telemetry.istio_definition.json b/templates/oam/workloads/1.11.0/telemetry.istio_definition.json deleted file mode 100644 index 3ea6ff3df..000000000 --- a/templates/oam/workloads/1.11.0/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5aa5b271d --- /dev/null +++ b/templates/oam/workloads/1.11.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9c619e481..000000000 --- a/templates/oam/workloads/1.11.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.0/virtualservice.istio_definition.json deleted file mode 100644 index f00313aee..000000000 --- a/templates/oam/workloads/1.11.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bbfabb4ad --- /dev/null +++ b/templates/oam/workloads/1.11.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index fdfebbcb5..000000000 --- a/templates/oam/workloads/1.11.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.0/workloadentry.istio_definition.json deleted file mode 100644 index 8b2357491..000000000 --- a/templates/oam/workloads/1.11.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c51422d9f --- /dev/null +++ b/templates/oam/workloads/1.11.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.11.0/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.0/workloadgroup.istio_definition.json deleted file mode 100644 index 96552e1fb..000000000 --- a/templates/oam/workloads/1.11.0/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..db91cc9f1 --- /dev/null +++ b/templates/oam/workloads/1.11.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.11.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index ea7b16b39..000000000 --- a/templates/oam/workloads/1.11.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..459da6e72 --- /dev/null +++ b/templates/oam/workloads/1.11.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45dd6a88e..000000000 --- a/templates/oam/workloads/1.11.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.1/destinationrule.istio_definition.json deleted file mode 100644 index e92533dea..000000000 --- a/templates/oam/workloads/1.11.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9c78ade15 --- /dev/null +++ b/templates/oam/workloads/1.11.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.11.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.1/envoyfilter.istio_definition.json deleted file mode 100644 index 5c7c350d6..000000000 --- a/templates/oam/workloads/1.11.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2f9cae0a0 --- /dev/null +++ b/templates/oam/workloads/1.11.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3ff0fc1fc..000000000 --- a/templates/oam/workloads/1.11.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/gateway.istio_definition.json b/templates/oam/workloads/1.11.1/gateway.istio_definition.json deleted file mode 100644 index d4d84916f..000000000 --- a/templates/oam/workloads/1.11.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..90b39d883 --- /dev/null +++ b/templates/oam/workloads/1.11.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.11.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.1/peerauthentication.istio_definition.json deleted file mode 100644 index 91003a50a..000000000 --- a/templates/oam/workloads/1.11.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4510291c6 --- /dev/null +++ b/templates/oam/workloads/1.11.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index ea340d6e6..000000000 --- a/templates/oam/workloads/1.11.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.1/requestauthentication.istio_definition.json deleted file mode 100644 index 3ffdab35b..000000000 --- a/templates/oam/workloads/1.11.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7064fa333 --- /dev/null +++ b/templates/oam/workloads/1.11.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3cc89ebc5..000000000 --- a/templates/oam/workloads/1.11.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.1/serviceentry.istio_definition.json deleted file mode 100644 index d22f07111..000000000 --- a/templates/oam/workloads/1.11.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ce1ddd9f --- /dev/null +++ b/templates/oam/workloads/1.11.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6bed0c025..000000000 --- a/templates/oam/workloads/1.11.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/sidecar.istio_definition.json b/templates/oam/workloads/1.11.1/sidecar.istio_definition.json deleted file mode 100644 index c32b8f8e6..000000000 --- a/templates/oam/workloads/1.11.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e386e3655 --- /dev/null +++ b/templates/oam/workloads/1.11.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6a19c57f1..000000000 --- a/templates/oam/workloads/1.11.1/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/telemetry.istio_definition.json b/templates/oam/workloads/1.11.1/telemetry.istio_definition.json deleted file mode 100644 index 6eeb6921f..000000000 --- a/templates/oam/workloads/1.11.1/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..88923da54 --- /dev/null +++ b/templates/oam/workloads/1.11.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9c619e481..000000000 --- a/templates/oam/workloads/1.11.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.1/virtualservice.istio_definition.json deleted file mode 100644 index 55c50d968..000000000 --- a/templates/oam/workloads/1.11.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..72b0d9579 --- /dev/null +++ b/templates/oam/workloads/1.11.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..54342c8b0 --- /dev/null +++ b/templates/oam/workloads/1.11.1/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index fdfebbcb5..000000000 --- a/templates/oam/workloads/1.11.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.1/workloadentry.istio_definition.json deleted file mode 100644 index 9c30a0bc9..000000000 --- a/templates/oam/workloads/1.11.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..35e6688cf --- /dev/null +++ b/templates/oam/workloads/1.11.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.11.1/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.1/workloadgroup.istio_definition.json deleted file mode 100644 index 8ce9f2190..000000000 --- a/templates/oam/workloads/1.11.1/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..251329825 --- /dev/null +++ b/templates/oam/workloads/1.11.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.11.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index 92b6ed1e9..000000000 --- a/templates/oam/workloads/1.11.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2236fd3b6 --- /dev/null +++ b/templates/oam/workloads/1.11.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45dd6a88e..000000000 --- a/templates/oam/workloads/1.11.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.2/destinationrule.istio_definition.json deleted file mode 100644 index 480c4b4d3..000000000 --- a/templates/oam/workloads/1.11.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e685ee233 --- /dev/null +++ b/templates/oam/workloads/1.11.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.11.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.2/envoyfilter.istio_definition.json deleted file mode 100644 index 5c9bfffd5..000000000 --- a/templates/oam/workloads/1.11.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e368e15c --- /dev/null +++ b/templates/oam/workloads/1.11.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3ff0fc1fc..000000000 --- a/templates/oam/workloads/1.11.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/gateway.istio_definition.json b/templates/oam/workloads/1.11.2/gateway.istio_definition.json deleted file mode 100644 index 6faac9094..000000000 --- a/templates/oam/workloads/1.11.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..19396d97d --- /dev/null +++ b/templates/oam/workloads/1.11.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.11.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.2/peerauthentication.istio_definition.json deleted file mode 100644 index ff5a4b9fa..000000000 --- a/templates/oam/workloads/1.11.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ddab36a5f --- /dev/null +++ b/templates/oam/workloads/1.11.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index ea340d6e6..000000000 --- a/templates/oam/workloads/1.11.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.2/requestauthentication.istio_definition.json deleted file mode 100644 index 267560315..000000000 --- a/templates/oam/workloads/1.11.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1c501e4a1 --- /dev/null +++ b/templates/oam/workloads/1.11.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3cc89ebc5..000000000 --- a/templates/oam/workloads/1.11.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.2/serviceentry.istio_definition.json deleted file mode 100644 index eda8f684b..000000000 --- a/templates/oam/workloads/1.11.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ddfa27e93 --- /dev/null +++ b/templates/oam/workloads/1.11.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6bed0c025..000000000 --- a/templates/oam/workloads/1.11.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/sidecar.istio_definition.json b/templates/oam/workloads/1.11.2/sidecar.istio_definition.json deleted file mode 100644 index 2da76b821..000000000 --- a/templates/oam/workloads/1.11.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb89b9466 --- /dev/null +++ b/templates/oam/workloads/1.11.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6a19c57f1..000000000 --- a/templates/oam/workloads/1.11.2/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/telemetry.istio_definition.json b/templates/oam/workloads/1.11.2/telemetry.istio_definition.json deleted file mode 100644 index a8c99c6ae..000000000 --- a/templates/oam/workloads/1.11.2/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..02eb58413 --- /dev/null +++ b/templates/oam/workloads/1.11.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9c619e481..000000000 --- a/templates/oam/workloads/1.11.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.2/virtualservice.istio_definition.json deleted file mode 100644 index 5479a0a3e..000000000 --- a/templates/oam/workloads/1.11.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5d6495752 --- /dev/null +++ b/templates/oam/workloads/1.11.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f47d3f32 --- /dev/null +++ b/templates/oam/workloads/1.11.2/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index fdfebbcb5..000000000 --- a/templates/oam/workloads/1.11.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.2/workloadentry.istio_definition.json deleted file mode 100644 index 345ef1dae..000000000 --- a/templates/oam/workloads/1.11.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b7f0c07fe --- /dev/null +++ b/templates/oam/workloads/1.11.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.11.2/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.2/workloadgroup.istio_definition.json deleted file mode 100644 index 1a0a39122..000000000 --- a/templates/oam/workloads/1.11.2/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..38d1b673b --- /dev/null +++ b/templates/oam/workloads/1.11.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.11.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index e9d431d62..000000000 --- a/templates/oam/workloads/1.11.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3dce2392 --- /dev/null +++ b/templates/oam/workloads/1.11.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45dd6a88e..000000000 --- a/templates/oam/workloads/1.11.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.3/destinationrule.istio_definition.json deleted file mode 100644 index e6e286c37..000000000 --- a/templates/oam/workloads/1.11.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d448ed561 --- /dev/null +++ b/templates/oam/workloads/1.11.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.11.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.3/envoyfilter.istio_definition.json deleted file mode 100644 index ebb94a0b7..000000000 --- a/templates/oam/workloads/1.11.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3bc15cf67 --- /dev/null +++ b/templates/oam/workloads/1.11.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3ff0fc1fc..000000000 --- a/templates/oam/workloads/1.11.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/gateway.istio_definition.json b/templates/oam/workloads/1.11.3/gateway.istio_definition.json deleted file mode 100644 index 09d931fd8..000000000 --- a/templates/oam/workloads/1.11.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f745e1320 --- /dev/null +++ b/templates/oam/workloads/1.11.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.11.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.3/peerauthentication.istio_definition.json deleted file mode 100644 index 5bd8d1927..000000000 --- a/templates/oam/workloads/1.11.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e78dc945f --- /dev/null +++ b/templates/oam/workloads/1.11.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index ea340d6e6..000000000 --- a/templates/oam/workloads/1.11.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.3/requestauthentication.istio_definition.json deleted file mode 100644 index 51a38af8f..000000000 --- a/templates/oam/workloads/1.11.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9487bfa39 --- /dev/null +++ b/templates/oam/workloads/1.11.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3cc89ebc5..000000000 --- a/templates/oam/workloads/1.11.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.3/serviceentry.istio_definition.json deleted file mode 100644 index 54cf25408..000000000 --- a/templates/oam/workloads/1.11.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb83edc4c --- /dev/null +++ b/templates/oam/workloads/1.11.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6bed0c025..000000000 --- a/templates/oam/workloads/1.11.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/sidecar.istio_definition.json b/templates/oam/workloads/1.11.3/sidecar.istio_definition.json deleted file mode 100644 index 6f856cbc6..000000000 --- a/templates/oam/workloads/1.11.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d04c217e3 --- /dev/null +++ b/templates/oam/workloads/1.11.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 850987187..000000000 --- a/templates/oam/workloads/1.11.3/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.3/telemetry.istio_definition.json b/templates/oam/workloads/1.11.3/telemetry.istio_definition.json deleted file mode 100644 index da19870a5..000000000 --- a/templates/oam/workloads/1.11.3/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb9a77cc6 --- /dev/null +++ b/templates/oam/workloads/1.11.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9c619e481..000000000 --- a/templates/oam/workloads/1.11.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.3/virtualservice.istio_definition.json deleted file mode 100644 index 4ff3e06b9..000000000 --- a/templates/oam/workloads/1.11.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8638a86b1 --- /dev/null +++ b/templates/oam/workloads/1.11.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0dc4fe7fb --- /dev/null +++ b/templates/oam/workloads/1.11.3/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index fdfebbcb5..000000000 --- a/templates/oam/workloads/1.11.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.3/workloadentry.istio_definition.json deleted file mode 100644 index de1432b35..000000000 --- a/templates/oam/workloads/1.11.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..60b89387e --- /dev/null +++ b/templates/oam/workloads/1.11.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.11.3/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.3/workloadgroup.istio_definition.json deleted file mode 100644 index 5387e3c0b..000000000 --- a/templates/oam/workloads/1.11.3/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1667e8e42 --- /dev/null +++ b/templates/oam/workloads/1.11.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.11.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index 7795c3a86..000000000 --- a/templates/oam/workloads/1.11.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..861979dca --- /dev/null +++ b/templates/oam/workloads/1.11.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45dd6a88e..000000000 --- a/templates/oam/workloads/1.11.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.4/destinationrule.istio_definition.json deleted file mode 100644 index c9c7fe70b..000000000 --- a/templates/oam/workloads/1.11.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c069fb90c --- /dev/null +++ b/templates/oam/workloads/1.11.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.11.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.4/envoyfilter.istio_definition.json deleted file mode 100644 index ee958e04f..000000000 --- a/templates/oam/workloads/1.11.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dedc821be --- /dev/null +++ b/templates/oam/workloads/1.11.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3ff0fc1fc..000000000 --- a/templates/oam/workloads/1.11.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/gateway.istio_definition.json b/templates/oam/workloads/1.11.4/gateway.istio_definition.json deleted file mode 100644 index f706f692b..000000000 --- a/templates/oam/workloads/1.11.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..570ca55db --- /dev/null +++ b/templates/oam/workloads/1.11.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.11.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.4/peerauthentication.istio_definition.json deleted file mode 100644 index d3f999f26..000000000 --- a/templates/oam/workloads/1.11.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..033f03c02 --- /dev/null +++ b/templates/oam/workloads/1.11.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e04e8ba1e..000000000 --- a/templates/oam/workloads/1.11.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -}} diff --git a/templates/oam/workloads/1.11.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.4/requestauthentication.istio_definition.json deleted file mode 100644 index 9304ee35a..000000000 --- a/templates/oam/workloads/1.11.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7b347b807 --- /dev/null +++ b/templates/oam/workloads/1.11.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3cc89ebc5..000000000 --- a/templates/oam/workloads/1.11.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.4/serviceentry.istio_definition.json deleted file mode 100644 index 866bf292b..000000000 --- a/templates/oam/workloads/1.11.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..15f9ed7a8 --- /dev/null +++ b/templates/oam/workloads/1.11.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6bed0c025..000000000 --- a/templates/oam/workloads/1.11.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/sidecar.istio_definition.json b/templates/oam/workloads/1.11.4/sidecar.istio_definition.json deleted file mode 100644 index 8dde0edb4..000000000 --- a/templates/oam/workloads/1.11.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aabc14e1b --- /dev/null +++ b/templates/oam/workloads/1.11.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 6a19c57f1..000000000 --- a/templates/oam/workloads/1.11.4/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/telemetry.istio_definition.json b/templates/oam/workloads/1.11.4/telemetry.istio_definition.json deleted file mode 100644 index 23f0a538d..000000000 --- a/templates/oam/workloads/1.11.4/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a03616c1e --- /dev/null +++ b/templates/oam/workloads/1.11.4/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 48c319564..000000000 --- a/templates/oam/workloads/1.11.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.4/virtualservice.istio_definition.json deleted file mode 100644 index 767844603..000000000 --- a/templates/oam/workloads/1.11.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fda692369 --- /dev/null +++ b/templates/oam/workloads/1.11.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b1ef3d5a6 --- /dev/null +++ b/templates/oam/workloads/1.11.4/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 644456815..000000000 --- a/templates/oam/workloads/1.11.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.4/workloadentry.istio_definition.json deleted file mode 100644 index 016aa06ab..000000000 --- a/templates/oam/workloads/1.11.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d172435d5 --- /dev/null +++ b/templates/oam/workloads/1.11.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.11.4/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.4/workloadgroup.istio_definition.json deleted file mode 100644 index f00ed9b89..000000000 --- a/templates/oam/workloads/1.11.4/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..32f5771fd --- /dev/null +++ b/templates/oam/workloads/1.11.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a0af2f54..000000000 --- a/templates/oam/workloads/1.11.5/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.11.5/authorizationpolicy.istio_definition.json deleted file mode 100644 index 08a72cf6d..000000000 --- a/templates/oam/workloads/1.11.5/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bdfe997a7 --- /dev/null +++ b/templates/oam/workloads/1.11.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 385e5965f..000000000 --- a/templates/oam/workloads/1.11.5/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/destinationrule.istio_definition.json b/templates/oam/workloads/1.11.5/destinationrule.istio_definition.json deleted file mode 100644 index 671a8d0bf..000000000 --- a/templates/oam/workloads/1.11.5/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a64ef533 --- /dev/null +++ b/templates/oam/workloads/1.11.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index c1e82c3b5..000000000 --- a/templates/oam/workloads/1.11.5/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/envoyfilter.istio_definition.json b/templates/oam/workloads/1.11.5/envoyfilter.istio_definition.json deleted file mode 100644 index bbf9168a6..000000000 --- a/templates/oam/workloads/1.11.5/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f5210223 --- /dev/null +++ b/templates/oam/workloads/1.11.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 174c0ae38..000000000 --- a/templates/oam/workloads/1.11.5/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/gateway.istio_definition.json b/templates/oam/workloads/1.11.5/gateway.istio_definition.json deleted file mode 100644 index 0b356ecbe..000000000 --- a/templates/oam/workloads/1.11.5/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2eb38038a --- /dev/null +++ b/templates/oam/workloads/1.11.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index b461fde0d..000000000 --- a/templates/oam/workloads/1.11.5/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/peerauthentication.istio_definition.json b/templates/oam/workloads/1.11.5/peerauthentication.istio_definition.json deleted file mode 100644 index 4e26dde2c..000000000 --- a/templates/oam/workloads/1.11.5/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f3b4cd610 --- /dev/null +++ b/templates/oam/workloads/1.11.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 603688263..000000000 --- a/templates/oam/workloads/1.11.5/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/requestauthentication.istio_definition.json b/templates/oam/workloads/1.11.5/requestauthentication.istio_definition.json deleted file mode 100644 index 21959cafe..000000000 --- a/templates/oam/workloads/1.11.5/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..097dd1410 --- /dev/null +++ b/templates/oam/workloads/1.11.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2ba53d4e5..000000000 --- a/templates/oam/workloads/1.11.5/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/serviceentry.istio_definition.json b/templates/oam/workloads/1.11.5/serviceentry.istio_definition.json deleted file mode 100644 index 6cfc414f8..000000000 --- a/templates/oam/workloads/1.11.5/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9e0ce59d --- /dev/null +++ b/templates/oam/workloads/1.11.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index da6768cd1..000000000 --- a/templates/oam/workloads/1.11.5/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/sidecar.istio_definition.json b/templates/oam/workloads/1.11.5/sidecar.istio_definition.json deleted file mode 100644 index 3890f04ff..000000000 --- a/templates/oam/workloads/1.11.5/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..90a55ee0e --- /dev/null +++ b/templates/oam/workloads/1.11.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 850987187..000000000 --- a/templates/oam/workloads/1.11.5/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/telemetry.istio_definition.json b/templates/oam/workloads/1.11.5/telemetry.istio_definition.json deleted file mode 100644 index 248d516f1..000000000 --- a/templates/oam/workloads/1.11.5/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..15e4e1772 --- /dev/null +++ b/templates/oam/workloads/1.11.5/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 48c319564..000000000 --- a/templates/oam/workloads/1.11.5/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1125 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/virtualservice.istio_definition.json b/templates/oam/workloads/1.11.5/virtualservice.istio_definition.json deleted file mode 100644 index f840c7582..000000000 --- a/templates/oam/workloads/1.11.5/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f484a6ecb --- /dev/null +++ b/templates/oam/workloads/1.11.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..81c2bfd33 --- /dev/null +++ b/templates/oam/workloads/1.11.5/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 644456815..000000000 --- a/templates/oam/workloads/1.11.5/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/workloadentry.istio_definition.json b/templates/oam/workloads/1.11.5/workloadentry.istio_definition.json deleted file mode 100644 index 71a218ef1..000000000 --- a/templates/oam/workloads/1.11.5/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a1f573df7 --- /dev/null +++ b/templates/oam/workloads/1.11.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 564999059..000000000 --- a/templates/oam/workloads/1.11.5/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.11.5/workloadgroup.istio_definition.json b/templates/oam/workloads/1.11.5/workloadgroup.istio_definition.json deleted file mode 100644 index b45bc6a76..000000000 --- a/templates/oam/workloads/1.11.5/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.11.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..439b4bf18 --- /dev/null +++ b/templates/oam/workloads/1.11.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.11.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0b4686208 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3bcb8c403 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..43927b138 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f8439561a --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cb0a0d654 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..46523dd43 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b50cf269d --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a33883cf0 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8eaaf5e0 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c632c21e2 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..791e89913 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8c73e02e9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3b35d17c6 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a37ebe418 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..805c41338 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..064ce0f0c --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2dfbb1c13 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..216f920b9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..692461376 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..88aff82a1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98b6763a7 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a934a41f --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ee64650e --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..02148c314 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..75a3e532e --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da1400ff0 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..782f8be7d --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9bee80789 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..198c1b5a7 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e8c5f2799 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a09b36442 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..964ee3fac --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..254059eb6 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9fa5383d2 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c9c0e589 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9875ef324 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..80aff3d9f --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fecdda183 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8dc0d21ec --- /dev/null +++ b/templates/oam/workloads/1.12.0-alpha.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-alpha.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..262f2cfde --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8172a0432 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7476514c --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3c0637395 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..005ea1f0e --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a8e7df7ed --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6e38324d4 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..21f31b5a7 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b7db813ef --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..602e024fd --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8f6ec7605 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c6ea87e99 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b08011c0a --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b6a537275 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2dd0d03a9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..468d235c5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..53a429eaf --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..adeb1f4b1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9e13c4b87 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d8aaf7d6d --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2f835f7b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb9510b4a --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb40d821e --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0762efc42 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92ce89b46 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb53ac439 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..583bc02c1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..74c8ea6a3 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c500bccf3 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b036c9126 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..26847d338 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ec45ba2eb --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b56e33ace --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51b900e17 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1f599c16d --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4c25479f --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6fe1b4242 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e1c440818 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f6a355f4 --- /dev/null +++ b/templates/oam/workloads/1.12.0-beta.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3e8ff8abd --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0235fe2e1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..55538f13c --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1bc38eba0 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb9cf15a1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..48cba5156 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3d2cb2c25 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..275842895 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2a02dab2b --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9ebddde00 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b81712b91 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ca5b21b1 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b77deea97 --- /dev/null +++ b/templates/oam/workloads/1.12.0-rc.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 50c6f545b..000000000 --- a/templates/oam/workloads/1.12.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.12.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index c6a323ea3..000000000 --- a/templates/oam/workloads/1.12.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a24116d20 --- /dev/null +++ b/templates/oam/workloads/1.12.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index df35090da..000000000 --- a/templates/oam/workloads/1.12.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1793 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "insecureSkipVerify": { - "type": [ - "boolean", - "null" - ] - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "insecureSkipVerify": { - "type": [ - "boolean", - "null" - ] - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only one of distribute, failover or failoverPriority can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "type": "string" - }, - "to": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "failoverPriority": { - "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveLocalOriginFailures": { - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "splitExternalLocalOriginErrors": { - "description": "Determines whether to distinguish local origin failures from external errors.", - "type": "boolean" - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "insecureSkipVerify": { - "type": [ - "boolean", - "null" - ] - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "credentialName": { - "type": "string" - }, - "insecureSkipVerify": { - "type": [ - "boolean", - "null" - ] - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.12.0/destinationrule.istio_definition.json deleted file mode 100644 index e799eb59e..000000000 --- a/templates/oam/workloads/1.12.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2187b3729 --- /dev/null +++ b/templates/oam/workloads/1.12.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2bb7f3884..000000000 --- a/templates/oam/workloads/1.12.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG", - "BOOTSTRAP" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "type": "string" - }, - "portName": { - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "priority": { - "description": "Priority defines the order in which patch sets are applied within a context.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.12.0/envoyfilter.istio_definition.json deleted file mode 100644 index e9ee97ac7..000000000 --- a/templates/oam/workloads/1.12.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..876489c45 --- /dev/null +++ b/templates/oam/workloads/1.12.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3ff0fc1fc..000000000 --- a/templates/oam/workloads/1.12.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/gateway.istio_definition.json b/templates/oam/workloads/1.12.0/gateway.istio_definition.json deleted file mode 100644 index 94db2bb1b..000000000 --- a/templates/oam/workloads/1.12.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..587edf6eb --- /dev/null +++ b/templates/oam/workloads/1.12.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 480870d78..000000000 --- a/templates/oam/workloads/1.12.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.12.0/peerauthentication.istio_definition.json deleted file mode 100644 index d83a25047..000000000 --- a/templates/oam/workloads/1.12.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c822ded29 --- /dev/null +++ b/templates/oam/workloads/1.12.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index dc54467a8..000000000 --- a/templates/oam/workloads/1.12.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the original token will be kept for the upstream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "type": "string" - }, - "jwks_uri": { - "type": "string" - }, - "jwksUri": { - "type": "string" - }, - "outputPayloadToHeader": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.12.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.12.0/requestauthentication.istio_definition.json deleted file mode 100644 index 3544ace21..000000000 --- a/templates/oam/workloads/1.12.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..ee6b04217 --- /dev/null +++ b/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3fe885049 --- /dev/null +++ b/templates/oam/workloads/1.12.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 050a9d2d1..000000000 --- a/templates/oam/workloads/1.12.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS", - "DNS_ROUND_ROBIN" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.12.0/serviceentry.istio_definition.json deleted file mode 100644 index c8252a6da..000000000 --- a/templates/oam/workloads/1.12.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..30912f620 --- /dev/null +++ b/templates/oam/workloads/1.12.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index da6768cd1..000000000 --- a/templates/oam/workloads/1.12.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.12.0/sidecar.istio_definition.json b/templates/oam/workloads/1.12.0/sidecar.istio_definition.json deleted file mode 100644 index 4ba050f4d..000000000 --- a/templates/oam/workloads/1.12.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4d36aa0eb --- /dev/null +++ b/templates/oam/workloads/1.12.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/telemetry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/telemetry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 1cab28c0d..000000000 --- a/templates/oam/workloads/1.12.0/telemetry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", - "properties": { - "accessLogging": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Controls logging.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "metrics": { - "description": "Optional.", - "items": { - "properties": { - "overrides": { - "description": "Optional.", - "items": { - "properties": { - "disabled": { - "description": "Optional.", - "type": [ - "boolean", - "null" - ] - }, - "match": { - "description": "Match allows provides the scope of the override.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ] - } - }, - { - "required": [ - "metric" - ] - }, - { - "required": [ - "customMetric" - ] - } - ], - "properties": { - "customMetric": { - "description": "Allows free-form specification of a metric.", - "type": "string" - }, - "metric": { - "description": "One of the well-known Istio Standard Metrics.", - "enum": [ - "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" - ], - "type": "string" - }, - "mode": { - "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", - "enum": [ - "CLIENT_AND_SERVER", - "CLIENT", - "SERVER" - ], - "type": "string" - } - }, - "type": "object" - }, - "tagOverrides": { - "additionalProperties": { - "properties": { - "operation": { - "description": "Operation controls whether or not to update/add a tag, or to remove it.", - "enum": [ - "UPSERT", - "REMOVE" - ], - "type": "string" - }, - "value": { - "description": "Value is only considered if the operation is `UPSERT`.", - "type": "string" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "tracing": { - "description": "Optional.", - "items": { - "properties": { - "customTags": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ] - } - }, - { - "required": [ - "literal" - ] - }, - { - "required": [ - "environment" - ] - }, - { - "required": [ - "header" - ] - } - ], - "properties": { - "environment": { - "description": "Environment adds the value of an environment variable to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the environment variable from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "header": { - "description": "RequestHeader adds the value of an header from the request to each span.", - "properties": { - "defaultValue": { - "description": "Optional.", - "type": "string" - }, - "name": { - "description": "Name of the header from which to extract the tag value.", - "type": "string" - } - }, - "type": "object" - }, - "literal": { - "description": "Literal adds the same, hard-coded value to each span.", - "properties": { - "value": { - "description": "The tag value to use.", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "description": "Optional.", - "type": "object" - }, - "disableSpanReporting": { - "description": "Controls span reporting.", - "type": [ - "boolean", - "null" - ] - }, - "providers": { - "description": "Optional.", - "items": { - "properties": { - "name": { - "description": "Required.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "randomSamplingPercentage": { - "type": [ - "number", - "null" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.12.0/telemetry.istio_definition.json b/templates/oam/workloads/1.12.0/telemetry.istio_definition.json deleted file mode 100644 index 2950278c5..000000000 --- a/templates/oam/workloads/1.12.0/telemetry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Telemetry.Istio" - }, - "spec": { - "definitionRef": { - "name": "telemetry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "telemetry.istio.io/v1alpha1", - "k8sKind": "Telemetry" - } - } -} diff --git a/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..7168b32b5 --- /dev/null +++ b/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..623ad5071 --- /dev/null +++ b/templates/oam/workloads/1.12.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 74e0687fb..000000000 --- a/templates/oam/workloads/1.12.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1168 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "type": "string" - }, - "http2Error": { - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "port" - ] - }, - { - "required": [ - "derivePort" - ] - } - ] - } - }, - { - "required": [ - "port" - ] - }, - { - "required": [ - "derivePort" - ] - } - ], - "properties": { - "authority": { - "type": "string" - }, - "derivePort": { - "enum": [ - "FROM_PROTOCOL_DEFAULT", - "FROM_REQUEST_PORT" - ], - "type": "string" - }, - "port": { - "description": "On a redirect, overwrite the port portion of the URL with this value.", - "type": "integer" - }, - "redirectCode": { - "type": "integer" - }, - "scheme": { - "description": "On a redirect, overwrite the scheme portion of the URL with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "type": "string" - }, - "uri": { - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.12.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.12.0/virtualservice.istio_definition.json deleted file mode 100644 index 850628017..000000000 --- a/templates/oam/workloads/1.12.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..55a433587 --- /dev/null +++ b/templates/oam/workloads/1.12.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/wasmplugin.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/wasmplugin.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7c1a1471b..000000000 --- a/templates/oam/workloads/1.12.0/wasmplugin.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "properties": { - "imagePullPolicy": { - "description": "The pull behaviour to be applied when fetching an OCI image.", - "enum": [ - "UNSPECIFIED_POLICY", - "IfNotPresent", - "Always" - ], - "type": "string" - }, - "imagePullSecret": { - "description": "Credentials to use for OCI image pulling.", - "type": "string" - }, - "phase": { - "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", - "enum": [ - "UNSPECIFIED_PHASE", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "pluginConfig": { - "description": "The configuration that will be passed on to the plugin.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "pluginName": { - "type": "string" - }, - "priority": { - "description": "Determines ordering of `WasmPlugins` in the same `phase`.", - "type": [ - "integer", - "null" - ] - }, - "selector": { - "properties": { - "matchLabels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "sha256": { - "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", - "type": "string" - }, - "url": { - "description": "URL of a Wasm module or OCI container.", - "type": "string" - }, - "verificationKey": { - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/wasmplugin.istio_definition.json b/templates/oam/workloads/1.12.0/wasmplugin.istio_definition.json deleted file mode 100644 index 4186dd986..000000000 --- a/templates/oam/workloads/1.12.0/wasmplugin.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WasmPlugin.Istio" - }, - "spec": { - "definitionRef": { - "name": "wasmplugin.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "extensions.istio.io/v1alpha1", - "k8sKind": "WasmPlugin" - } - } -} diff --git a/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..c2ef82708 --- /dev/null +++ b/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,65 @@ +{ + "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", + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..88e0730e4 --- /dev/null +++ b/templates/oam/workloads/1.12.0/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index fdfebbcb5..000000000 --- a/templates/oam/workloads/1.12.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.12.0/workloadentry.istio_definition.json deleted file mode 100644 index 79a3202d7..000000000 --- a/templates/oam/workloads/1.12.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..870abf2b2 --- /dev/null +++ b/templates/oam/workloads/1.12.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 29ecc8453..000000000 --- a/templates/oam/workloads/1.12.0/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "type": "string" - }, - "network": { - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadgroup.istio_definition.json b/templates/oam/workloads/1.12.0/workloadgroup.istio_definition.json deleted file mode 100644 index 08fe8cfa1..000000000 --- a/templates/oam/workloads/1.12.0/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.12.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..70bff6f3e --- /dev/null +++ b/templates/oam/workloads/1.12.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.12.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d6123bd90 --- /dev/null +++ b/templates/oam/workloads/1.4.10/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fe2564a0c --- /dev/null +++ b/templates/oam/workloads/1.4.10/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0991605d5 --- /dev/null +++ b/templates/oam/workloads/1.4.10/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..efe629536 --- /dev/null +++ b/templates/oam/workloads/1.4.10/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e981b7a2 --- /dev/null +++ b/templates/oam/workloads/1.4.10/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a715db4c0 --- /dev/null +++ b/templates/oam/workloads/1.4.10/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.4.10/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aeefeca02 --- /dev/null +++ b/templates/oam/workloads/1.4.10/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8c4450597 --- /dev/null +++ b/templates/oam/workloads/1.4.10/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..29d119341 --- /dev/null +++ b/templates/oam/workloads/1.4.10/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.4.10/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7b4fd1301 --- /dev/null +++ b/templates/oam/workloads/1.4.10/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a4aa3b445 --- /dev/null +++ b/templates/oam/workloads/1.4.10/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f36bb495 --- /dev/null +++ b/templates/oam/workloads/1.4.10/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..96a9d516a --- /dev/null +++ b/templates/oam/workloads/1.4.10/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cd9793b24 --- /dev/null +++ b/templates/oam/workloads/1.4.10/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0b533d5de --- /dev/null +++ b/templates/oam/workloads/1.4.10/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.4.10/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c1b6feea0 --- /dev/null +++ b/templates/oam/workloads/1.4.10/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e9d30040a --- /dev/null +++ b/templates/oam/workloads/1.4.10/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7056b123 --- /dev/null +++ b/templates/oam/workloads/1.4.10/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..00e9ecf8f --- /dev/null +++ b/templates/oam/workloads/1.4.10/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..27e9ee119 --- /dev/null +++ b/templates/oam/workloads/1.4.10/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f409f0e6 --- /dev/null +++ b/templates/oam/workloads/1.4.10/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..060261c7c --- /dev/null +++ b/templates/oam/workloads/1.4.10/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f417f8603 --- /dev/null +++ b/templates/oam/workloads/1.4.8/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aafffe8b9 --- /dev/null +++ b/templates/oam/workloads/1.4.8/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2541f7dcf --- /dev/null +++ b/templates/oam/workloads/1.4.8/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..47e8b8a4f --- /dev/null +++ b/templates/oam/workloads/1.4.8/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6bb3baf58 --- /dev/null +++ b/templates/oam/workloads/1.4.8/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..95f72c92d --- /dev/null +++ b/templates/oam/workloads/1.4.8/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.4.8/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4261f9ec3 --- /dev/null +++ b/templates/oam/workloads/1.4.8/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6fe963a46 --- /dev/null +++ b/templates/oam/workloads/1.4.8/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e4d2cacca --- /dev/null +++ b/templates/oam/workloads/1.4.8/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.4.8/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dc8b0f350 --- /dev/null +++ b/templates/oam/workloads/1.4.8/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..233f6abd4 --- /dev/null +++ b/templates/oam/workloads/1.4.8/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f92e40a7f --- /dev/null +++ b/templates/oam/workloads/1.4.8/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0f3e216c0 --- /dev/null +++ b/templates/oam/workloads/1.4.8/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5eec063e0 --- /dev/null +++ b/templates/oam/workloads/1.4.8/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..43dd6f30d --- /dev/null +++ b/templates/oam/workloads/1.4.8/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.4.8/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0caa0deff --- /dev/null +++ b/templates/oam/workloads/1.4.8/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f54423fc7 --- /dev/null +++ b/templates/oam/workloads/1.4.8/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..540dbf0b6 --- /dev/null +++ b/templates/oam/workloads/1.4.8/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bbcf64d4a --- /dev/null +++ b/templates/oam/workloads/1.4.8/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5eb948cf9 --- /dev/null +++ b/templates/oam/workloads/1.4.8/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8fcaf6d7e --- /dev/null +++ b/templates/oam/workloads/1.4.8/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bc3695601 --- /dev/null +++ b/templates/oam/workloads/1.4.8/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3acd55e91 --- /dev/null +++ b/templates/oam/workloads/1.4.9/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c741e69c --- /dev/null +++ b/templates/oam/workloads/1.4.9/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c6b83e65c --- /dev/null +++ b/templates/oam/workloads/1.4.9/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f9fee5f1 --- /dev/null +++ b/templates/oam/workloads/1.4.9/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d3c74e9f9 --- /dev/null +++ b/templates/oam/workloads/1.4.9/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..095ffe827 --- /dev/null +++ b/templates/oam/workloads/1.4.9/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.4.9/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ad6e2770c --- /dev/null +++ b/templates/oam/workloads/1.4.9/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ea286a58d --- /dev/null +++ b/templates/oam/workloads/1.4.9/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9bd2c328d --- /dev/null +++ b/templates/oam/workloads/1.4.9/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.4.9/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0caa2c281 --- /dev/null +++ b/templates/oam/workloads/1.4.9/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8f40c5e05 --- /dev/null +++ b/templates/oam/workloads/1.4.9/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..092e2a88b --- /dev/null +++ b/templates/oam/workloads/1.4.9/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..611c89ac9 --- /dev/null +++ b/templates/oam/workloads/1.4.9/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..63a0aed54 --- /dev/null +++ b/templates/oam/workloads/1.4.9/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b5a341b2 --- /dev/null +++ b/templates/oam/workloads/1.4.9/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.4.9/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6488a3c5f --- /dev/null +++ b/templates/oam/workloads/1.4.9/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c1d6f750d --- /dev/null +++ b/templates/oam/workloads/1.4.9/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..086babe69 --- /dev/null +++ b/templates/oam/workloads/1.4.9/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ebbd8ae64 --- /dev/null +++ b/templates/oam/workloads/1.4.9/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92171ad73 --- /dev/null +++ b/templates/oam/workloads/1.4.9/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6413fd7ae --- /dev/null +++ b/templates/oam/workloads/1.4.9/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..93c14caa8 --- /dev/null +++ b/templates/oam/workloads/1.4.9/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.4.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d6a08f986 --- /dev/null +++ b/templates/oam/workloads/1.5.10/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aa8375555 --- /dev/null +++ b/templates/oam/workloads/1.5.10/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28b7d039b --- /dev/null +++ b/templates/oam/workloads/1.5.10/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a639e5683 --- /dev/null +++ b/templates/oam/workloads/1.5.10/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..af5075d61 --- /dev/null +++ b/templates/oam/workloads/1.5.10/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.5.10/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..83702b232 --- /dev/null +++ b/templates/oam/workloads/1.5.10/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98b2a574c --- /dev/null +++ b/templates/oam/workloads/1.5.10/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..111ef4b05 --- /dev/null +++ b/templates/oam/workloads/1.5.10/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.5.10/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fd205178d --- /dev/null +++ b/templates/oam/workloads/1.5.10/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..351eac50e --- /dev/null +++ b/templates/oam/workloads/1.5.10/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f957632b4 --- /dev/null +++ b/templates/oam/workloads/1.5.10/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..93cf409e3 --- /dev/null +++ b/templates/oam/workloads/1.5.10/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7c982a717 --- /dev/null +++ b/templates/oam/workloads/1.5.10/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.10/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f91741619 --- /dev/null +++ b/templates/oam/workloads/1.5.10/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..947c39146 --- /dev/null +++ b/templates/oam/workloads/1.5.10/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..01e5fdf5f --- /dev/null +++ b/templates/oam/workloads/1.5.10/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f427a6b0 --- /dev/null +++ b/templates/oam/workloads/1.5.10/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..450376ccb --- /dev/null +++ b/templates/oam/workloads/1.5.10/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8b152ebbe --- /dev/null +++ b/templates/oam/workloads/1.5.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8bb039723 --- /dev/null +++ b/templates/oam/workloads/1.5.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..687ccbd85 --- /dev/null +++ b/templates/oam/workloads/1.5.2/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a121b8cfe --- /dev/null +++ b/templates/oam/workloads/1.5.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f173c9ccb --- /dev/null +++ b/templates/oam/workloads/1.5.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..84f9b01c0 --- /dev/null +++ b/templates/oam/workloads/1.5.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a8c6ee75 --- /dev/null +++ b/templates/oam/workloads/1.5.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..134e44851 --- /dev/null +++ b/templates/oam/workloads/1.5.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..579cd0425 --- /dev/null +++ b/templates/oam/workloads/1.5.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..91531eea1 --- /dev/null +++ b/templates/oam/workloads/1.5.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..97458a587 --- /dev/null +++ b/templates/oam/workloads/1.5.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..401576674 --- /dev/null +++ b/templates/oam/workloads/1.5.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f09a8ac47 --- /dev/null +++ b/templates/oam/workloads/1.5.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..41a514c9d --- /dev/null +++ b/templates/oam/workloads/1.5.2/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ca0e963d9 --- /dev/null +++ b/templates/oam/workloads/1.5.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6c0c98ab9 --- /dev/null +++ b/templates/oam/workloads/1.5.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b71449ccf --- /dev/null +++ b/templates/oam/workloads/1.5.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..318fe86be --- /dev/null +++ b/templates/oam/workloads/1.5.2/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d85efe347 --- /dev/null +++ b/templates/oam/workloads/1.5.2/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1fba14d4d --- /dev/null +++ b/templates/oam/workloads/1.5.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b7b73f628 --- /dev/null +++ b/templates/oam/workloads/1.5.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b1b136fff --- /dev/null +++ b/templates/oam/workloads/1.5.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..25aae00cf --- /dev/null +++ b/templates/oam/workloads/1.5.3/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..67815857d --- /dev/null +++ b/templates/oam/workloads/1.5.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..006685a69 --- /dev/null +++ b/templates/oam/workloads/1.5.3/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e6d621ad0 --- /dev/null +++ b/templates/oam/workloads/1.5.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f51d7ffa7 --- /dev/null +++ b/templates/oam/workloads/1.5.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..61659f7d6 --- /dev/null +++ b/templates/oam/workloads/1.5.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.3/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4fcf94d83 --- /dev/null +++ b/templates/oam/workloads/1.5.3/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..85d918a8f --- /dev/null +++ b/templates/oam/workloads/1.5.3/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ebde3c48a --- /dev/null +++ b/templates/oam/workloads/1.5.3/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.3/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..34f78ca94 --- /dev/null +++ b/templates/oam/workloads/1.5.3/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..499eb014c --- /dev/null +++ b/templates/oam/workloads/1.5.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8bc88a58 --- /dev/null +++ b/templates/oam/workloads/1.5.3/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fc919b18e --- /dev/null +++ b/templates/oam/workloads/1.5.3/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4a69f9d5b --- /dev/null +++ b/templates/oam/workloads/1.5.3/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4399fb87e --- /dev/null +++ b/templates/oam/workloads/1.5.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.3/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b250ef34c --- /dev/null +++ b/templates/oam/workloads/1.5.3/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c5a9d61ba --- /dev/null +++ b/templates/oam/workloads/1.5.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..33709786d --- /dev/null +++ b/templates/oam/workloads/1.5.3/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb376acbc --- /dev/null +++ b/templates/oam/workloads/1.5.3/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8a94b7d7 --- /dev/null +++ b/templates/oam/workloads/1.5.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bd35c26d6 --- /dev/null +++ b/templates/oam/workloads/1.5.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fbde69a30 --- /dev/null +++ b/templates/oam/workloads/1.5.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb7020b7e --- /dev/null +++ b/templates/oam/workloads/1.5.4/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..393774635 --- /dev/null +++ b/templates/oam/workloads/1.5.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..db932130d --- /dev/null +++ b/templates/oam/workloads/1.5.4/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ae33f86b1 --- /dev/null +++ b/templates/oam/workloads/1.5.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..108c30363 --- /dev/null +++ b/templates/oam/workloads/1.5.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1a9263775 --- /dev/null +++ b/templates/oam/workloads/1.5.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.4/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fee9eadd3 --- /dev/null +++ b/templates/oam/workloads/1.5.4/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..baf6f24c1 --- /dev/null +++ b/templates/oam/workloads/1.5.4/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2d53303d7 --- /dev/null +++ b/templates/oam/workloads/1.5.4/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.4/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..368aca8f6 --- /dev/null +++ b/templates/oam/workloads/1.5.4/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f48000fc --- /dev/null +++ b/templates/oam/workloads/1.5.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..690e4b9e5 --- /dev/null +++ b/templates/oam/workloads/1.5.4/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9b20ec3f6 --- /dev/null +++ b/templates/oam/workloads/1.5.4/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ebaf732e8 --- /dev/null +++ b/templates/oam/workloads/1.5.4/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ea980b691 --- /dev/null +++ b/templates/oam/workloads/1.5.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.4/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f305589ed --- /dev/null +++ b/templates/oam/workloads/1.5.4/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e337ed8c1 --- /dev/null +++ b/templates/oam/workloads/1.5.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c64635694 --- /dev/null +++ b/templates/oam/workloads/1.5.4/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e70071b14 --- /dev/null +++ b/templates/oam/workloads/1.5.4/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e1f2f75b3 --- /dev/null +++ b/templates/oam/workloads/1.5.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..845e5a7a0 --- /dev/null +++ b/templates/oam/workloads/1.5.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8873df3fc --- /dev/null +++ b/templates/oam/workloads/1.5.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de9d833b8 --- /dev/null +++ b/templates/oam/workloads/1.5.5/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1729e65db --- /dev/null +++ b/templates/oam/workloads/1.5.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6006df4e9 --- /dev/null +++ b/templates/oam/workloads/1.5.5/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d4c7c340f --- /dev/null +++ b/templates/oam/workloads/1.5.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..31ff75869 --- /dev/null +++ b/templates/oam/workloads/1.5.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3398ffa55 --- /dev/null +++ b/templates/oam/workloads/1.5.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.5/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..40fa23f9e --- /dev/null +++ b/templates/oam/workloads/1.5.5/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb3905aa6 --- /dev/null +++ b/templates/oam/workloads/1.5.5/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c2856cba7 --- /dev/null +++ b/templates/oam/workloads/1.5.5/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.5/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f252b766e --- /dev/null +++ b/templates/oam/workloads/1.5.5/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..12933f425 --- /dev/null +++ b/templates/oam/workloads/1.5.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e9c0669d3 --- /dev/null +++ b/templates/oam/workloads/1.5.5/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..43e8add11 --- /dev/null +++ b/templates/oam/workloads/1.5.5/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..89f0abad0 --- /dev/null +++ b/templates/oam/workloads/1.5.5/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3aa762b6d --- /dev/null +++ b/templates/oam/workloads/1.5.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.5/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e7976f9ef --- /dev/null +++ b/templates/oam/workloads/1.5.5/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3755080c --- /dev/null +++ b/templates/oam/workloads/1.5.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..11adc0e55 --- /dev/null +++ b/templates/oam/workloads/1.5.5/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3673d6148 --- /dev/null +++ b/templates/oam/workloads/1.5.5/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e858ad9f --- /dev/null +++ b/templates/oam/workloads/1.5.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..76d97d37d --- /dev/null +++ b/templates/oam/workloads/1.5.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fcc0639d3 --- /dev/null +++ b/templates/oam/workloads/1.5.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..81c7101a2 --- /dev/null +++ b/templates/oam/workloads/1.5.6/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18baaf45d --- /dev/null +++ b/templates/oam/workloads/1.5.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fc76836d0 --- /dev/null +++ b/templates/oam/workloads/1.5.6/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..edfbaf6c0 --- /dev/null +++ b/templates/oam/workloads/1.5.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..068e55aed --- /dev/null +++ b/templates/oam/workloads/1.5.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..df8122137 --- /dev/null +++ b/templates/oam/workloads/1.5.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.6/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fdd94dbba --- /dev/null +++ b/templates/oam/workloads/1.5.6/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cf34df1ae --- /dev/null +++ b/templates/oam/workloads/1.5.6/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3fc21abd9 --- /dev/null +++ b/templates/oam/workloads/1.5.6/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.6/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..079b2c4d3 --- /dev/null +++ b/templates/oam/workloads/1.5.6/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..97ba10339 --- /dev/null +++ b/templates/oam/workloads/1.5.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..406ddcc69 --- /dev/null +++ b/templates/oam/workloads/1.5.6/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cf6801571 --- /dev/null +++ b/templates/oam/workloads/1.5.6/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..27b2c5d2c --- /dev/null +++ b/templates/oam/workloads/1.5.6/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e2e61ccab --- /dev/null +++ b/templates/oam/workloads/1.5.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.6/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fb74b9b96 --- /dev/null +++ b/templates/oam/workloads/1.5.6/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3952e8eb --- /dev/null +++ b/templates/oam/workloads/1.5.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fc0778638 --- /dev/null +++ b/templates/oam/workloads/1.5.6/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4f0054cd6 --- /dev/null +++ b/templates/oam/workloads/1.5.6/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66127a5ab --- /dev/null +++ b/templates/oam/workloads/1.5.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ce8213e83 --- /dev/null +++ b/templates/oam/workloads/1.5.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e9320fd46 --- /dev/null +++ b/templates/oam/workloads/1.5.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5cd9b0fe9 --- /dev/null +++ b/templates/oam/workloads/1.5.7/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0bdf72fe3 --- /dev/null +++ b/templates/oam/workloads/1.5.7/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c2993e059 --- /dev/null +++ b/templates/oam/workloads/1.5.7/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ddb96f132 --- /dev/null +++ b/templates/oam/workloads/1.5.7/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..db0b97f1f --- /dev/null +++ b/templates/oam/workloads/1.5.7/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..af5e1932c --- /dev/null +++ b/templates/oam/workloads/1.5.7/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.5.7/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..604ca8a04 --- /dev/null +++ b/templates/oam/workloads/1.5.7/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..45301d042 --- /dev/null +++ b/templates/oam/workloads/1.5.7/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..89cf4bc2a --- /dev/null +++ b/templates/oam/workloads/1.5.7/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.5.7/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2ecb51925 --- /dev/null +++ b/templates/oam/workloads/1.5.7/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e4a907b4f --- /dev/null +++ b/templates/oam/workloads/1.5.7/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..373a25b60 --- /dev/null +++ b/templates/oam/workloads/1.5.7/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..540f8664c --- /dev/null +++ b/templates/oam/workloads/1.5.7/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..53f2c21c8 --- /dev/null +++ b/templates/oam/workloads/1.5.7/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a46c8296f --- /dev/null +++ b/templates/oam/workloads/1.5.7/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.7/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7764e597 --- /dev/null +++ b/templates/oam/workloads/1.5.7/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..910e5ef27 --- /dev/null +++ b/templates/oam/workloads/1.5.7/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5bbff21cc --- /dev/null +++ b/templates/oam/workloads/1.5.7/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c549a7196 --- /dev/null +++ b/templates/oam/workloads/1.5.7/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aa015fbc7 --- /dev/null +++ b/templates/oam/workloads/1.5.7/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77a28c231 --- /dev/null +++ b/templates/oam/workloads/1.5.7/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..78d03e591 --- /dev/null +++ b/templates/oam/workloads/1.5.7/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7ff04ee83 --- /dev/null +++ b/templates/oam/workloads/1.5.8/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ccb24020 --- /dev/null +++ b/templates/oam/workloads/1.5.8/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d43b362fd --- /dev/null +++ b/templates/oam/workloads/1.5.8/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..82e4cf186 --- /dev/null +++ b/templates/oam/workloads/1.5.8/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8113664b3 --- /dev/null +++ b/templates/oam/workloads/1.5.8/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.5.8/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0772473aa --- /dev/null +++ b/templates/oam/workloads/1.5.8/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da3a6999c --- /dev/null +++ b/templates/oam/workloads/1.5.8/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bda14c564 --- /dev/null +++ b/templates/oam/workloads/1.5.8/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.5.8/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a230e6d97 --- /dev/null +++ b/templates/oam/workloads/1.5.8/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7583cfe3 --- /dev/null +++ b/templates/oam/workloads/1.5.8/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13f6ae4dd --- /dev/null +++ b/templates/oam/workloads/1.5.8/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e3a4b4062 --- /dev/null +++ b/templates/oam/workloads/1.5.8/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb7846f19 --- /dev/null +++ b/templates/oam/workloads/1.5.8/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.8/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e822d5534 --- /dev/null +++ b/templates/oam/workloads/1.5.8/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c6b9b245 --- /dev/null +++ b/templates/oam/workloads/1.5.8/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ff57300a3 --- /dev/null +++ b/templates/oam/workloads/1.5.8/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b91fc5cd4 --- /dev/null +++ b/templates/oam/workloads/1.5.8/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f2a0a15ad --- /dev/null +++ b/templates/oam/workloads/1.5.8/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4988d2cb3 --- /dev/null +++ b/templates/oam/workloads/1.5.9/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a55db0a2d --- /dev/null +++ b/templates/oam/workloads/1.5.9/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0a4d43266 --- /dev/null +++ b/templates/oam/workloads/1.5.9/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5adff8376 --- /dev/null +++ b/templates/oam/workloads/1.5.9/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a8fc34e8c --- /dev/null +++ b/templates/oam/workloads/1.5.9/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.5.9/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..544c173ef --- /dev/null +++ b/templates/oam/workloads/1.5.9/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5736ae100 --- /dev/null +++ b/templates/oam/workloads/1.5.9/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0e3051346 --- /dev/null +++ b/templates/oam/workloads/1.5.9/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.5.9/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bc5d2361e --- /dev/null +++ b/templates/oam/workloads/1.5.9/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2e8be1204 --- /dev/null +++ b/templates/oam/workloads/1.5.9/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b84e22a98 --- /dev/null +++ b/templates/oam/workloads/1.5.9/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9520a41df --- /dev/null +++ b/templates/oam/workloads/1.5.9/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58d68f424 --- /dev/null +++ b/templates/oam/workloads/1.5.9/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.5.9/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c050e23ce --- /dev/null +++ b/templates/oam/workloads/1.5.9/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..94d14838e --- /dev/null +++ b/templates/oam/workloads/1.5.9/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8f7c59dd5 --- /dev/null +++ b/templates/oam/workloads/1.5.9/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b1c65b825 --- /dev/null +++ b/templates/oam/workloads/1.5.9/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77e393124 --- /dev/null +++ b/templates/oam/workloads/1.5.9/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.5.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6464a6711 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7174df12 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c6794ec28 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fbf402575 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9954c37b7 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fdf36c54e --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..95eb17731 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98f55e290 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dffb2db00 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f780dde6 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d68ddab4c --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f06f2ae38 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58f7f3dd3 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e5104624a --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..803d758fc --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1261f0d33 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3a65be495 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..25f929e50 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5e7159768 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..38a422c47 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..610bebbda --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6fbb66437 --- /dev/null +++ b/templates/oam/workloads/1.6.0-alpha.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a43f67f97 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..010c006c1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..982beed85 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66d24c3e8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4a54f69b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a8eae4a62 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1b8e41a5d --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bf325f069 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2b485e535 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8689c5fa7 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d8d6e9e2e --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..85f34fbc8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0959ff266 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..096496ff1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..04060cc15 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..809a7f7a3 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c195718ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e882a440 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..848fa5a61 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e04fab775 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..990e4f3d0 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..52905e294 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fc6aed297 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..34d35411e --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cd8c100c1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..26c325da6 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ff22ccac1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd16f4b00 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4169c7e1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..11b8a5657 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c2b5eeee4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..38b5729bb --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f381a1d7 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d865dff8d --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58c660cd9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..191ca2eb3 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..10cb6f14d --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a6829460 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4bab3c87c --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..47f6e12d0 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..640ae756b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bada3f603 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aba9c8c1b --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..87dfb0964 --- /dev/null +++ b/templates/oam/workloads/1.6.0-beta.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..94321c9bf --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f145306de --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ac63abd61 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e84500191 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4aa75a5f5 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..37426327f --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..276092f62 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..59aa2bd35 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b7c37572a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9ba7733fe --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1cc967f7a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6eec93411 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2440ec3f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9980eea8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..224157938 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1b08efea2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6878d467f --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4a6097375 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f25a35463 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de821ee6d --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3a41d2b44 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..430f184f5 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..adcf6585b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..63248444f --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..76332f6fb --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..734cae54d --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28b87ae87 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a950a3862 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7eb86feac --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3fe8ed60 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4d88e3eab --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7b06b9a2c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d602e1ae7 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b5d1a1b4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b3a76a6e0 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c81a369d2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..343b24743 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..992c58009 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..715c7ea69 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e877a5c0a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f6717c582 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bcf021487 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e80a22608 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..539939328 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a47477a56 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..21fe7035e --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51721b97c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9f9c098ca --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..39e560764 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6d3586ee0 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4272b0752 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..716b09d01 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1a5fc07af --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..302e5c404 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..86ec8286a --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9921e33a8 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..235bd38ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb69b98f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..df8fa8cc3 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b88edac5 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..25ba99b19 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2fbd8955f --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f0886daea --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f6b48d9a2 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bf0276994 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..129f5043c --- /dev/null +++ b/templates/oam/workloads/1.6.0-rc.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.0/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.0/attributemanifest.istio_definition.json deleted file mode 100644 index 9f1a5ebe6..000000000 --- a/templates/oam/workloads/1.6.0/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..37301b9e2 --- /dev/null +++ b/templates/oam/workloads/1.6.0/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index 80166180f..000000000 --- a/templates/oam/workloads/1.6.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3011cd3c5 --- /dev/null +++ b/templates/oam/workloads/1.6.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.0/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.0/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.0/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 483ef96e4..000000000 --- a/templates/oam/workloads/1.6.0/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3ea574a98 --- /dev/null +++ b/templates/oam/workloads/1.6.0/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.0/destinationrule.istio_definition.json deleted file mode 100644 index c6431ca4a..000000000 --- a/templates/oam/workloads/1.6.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..910058122 --- /dev/null +++ b/templates/oam/workloads/1.6.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.0/envoyfilter.istio_definition.json deleted file mode 100644 index 3550672ff..000000000 --- a/templates/oam/workloads/1.6.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8601cd4f --- /dev/null +++ b/templates/oam/workloads/1.6.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/gateway.istio_definition.json b/templates/oam/workloads/1.6.0/gateway.istio_definition.json deleted file mode 100644 index bbe10a5e6..000000000 --- a/templates/oam/workloads/1.6.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dc2ede489 --- /dev/null +++ b/templates/oam/workloads/1.6.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.0/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/handler.istio_definition.json b/templates/oam/workloads/1.6.0/handler.istio_definition.json deleted file mode 100644 index 16e4690f1..000000000 --- a/templates/oam/workloads/1.6.0/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.0/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.0/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..553b9ad45 --- /dev/null +++ b/templates/oam/workloads/1.6.0/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.0/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.0/httpapispec.istio_definition.json deleted file mode 100644 index f709bda04..000000000 --- a/templates/oam/workloads/1.6.0/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7af589f97 --- /dev/null +++ b/templates/oam/workloads/1.6.0/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.0/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.0/httpapispecbinding.istio_definition.json deleted file mode 100644 index 663cf9fee..000000000 --- a/templates/oam/workloads/1.6.0/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..56cf02309 --- /dev/null +++ b/templates/oam/workloads/1.6.0/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.0/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.0/instance.istio_definition.json b/templates/oam/workloads/1.6.0/instance.istio_definition.json deleted file mode 100644 index ee28a94da..000000000 --- a/templates/oam/workloads/1.6.0/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.0/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.0/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f0a7cac29 --- /dev/null +++ b/templates/oam/workloads/1.6.0/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.0/peerauthentication.istio_definition.json deleted file mode 100644 index 7890f6939..000000000 --- a/templates/oam/workloads/1.6.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..00a419b00 --- /dev/null +++ b/templates/oam/workloads/1.6.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.0/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.0/quotaspec.istio_definition.json deleted file mode 100644 index fb65731d4..000000000 --- a/templates/oam/workloads/1.6.0/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c0d239e1f --- /dev/null +++ b/templates/oam/workloads/1.6.0/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.0/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.0/quotaspecbinding.istio_definition.json deleted file mode 100644 index 094e4e5f7..000000000 --- a/templates/oam/workloads/1.6.0/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..778475ae9 --- /dev/null +++ b/templates/oam/workloads/1.6.0/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.0/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.0/rbacconfig.istio_definition.json deleted file mode 100644 index f9fe6ec74..000000000 --- a/templates/oam/workloads/1.6.0/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3dda0bd4d --- /dev/null +++ b/templates/oam/workloads/1.6.0/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.0/requestauthentication.istio_definition.json deleted file mode 100644 index e41d8b109..000000000 --- a/templates/oam/workloads/1.6.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..161c7d7d9 --- /dev/null +++ b/templates/oam/workloads/1.6.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.0/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rule.istio_definition.json b/templates/oam/workloads/1.6.0/rule.istio_definition.json deleted file mode 100644 index 267785848..000000000 --- a/templates/oam/workloads/1.6.0/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.0/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.0/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..48d10457b --- /dev/null +++ b/templates/oam/workloads/1.6.0/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.0/serviceentry.istio_definition.json deleted file mode 100644 index 7321b5c42..000000000 --- a/templates/oam/workloads/1.6.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..467fb4cf0 --- /dev/null +++ b/templates/oam/workloads/1.6.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.0/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.0/servicerole.istio_definition.json b/templates/oam/workloads/1.6.0/servicerole.istio_definition.json deleted file mode 100644 index 7fdf65214..000000000 --- a/templates/oam/workloads/1.6.0/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3baa1cedc --- /dev/null +++ b/templates/oam/workloads/1.6.0/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.0/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.0/servicerolebinding.istio_definition.json deleted file mode 100644 index c3fc534fc..000000000 --- a/templates/oam/workloads/1.6.0/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0d3e96cae --- /dev/null +++ b/templates/oam/workloads/1.6.0/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/sidecar.istio_definition.json b/templates/oam/workloads/1.6.0/sidecar.istio_definition.json deleted file mode 100644 index 18943a1bb..000000000 --- a/templates/oam/workloads/1.6.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3031cfdaf --- /dev/null +++ b/templates/oam/workloads/1.6.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.0/virtualservice.istio_definition.json deleted file mode 100644 index bfeb6cf5c..000000000 --- a/templates/oam/workloads/1.6.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0cfdba6a3 --- /dev/null +++ b/templates/oam/workloads/1.6.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.0/workloadentry.istio_definition.json deleted file mode 100644 index 2a87c2db2..000000000 --- a/templates/oam/workloads/1.6.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4534daf87 --- /dev/null +++ b/templates/oam/workloads/1.6.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.1/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.1/attributemanifest.istio_definition.json deleted file mode 100644 index 30c07ccb1..000000000 --- a/templates/oam/workloads/1.6.1/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b5e8fd59 --- /dev/null +++ b/templates/oam/workloads/1.6.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index a40857da7..000000000 --- a/templates/oam/workloads/1.6.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..30b345501 --- /dev/null +++ b/templates/oam/workloads/1.6.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.1/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.1/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.1/clusterrbacconfig.istio_definition.json deleted file mode 100644 index c2bd6904c..000000000 --- a/templates/oam/workloads/1.6.1/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..09866d773 --- /dev/null +++ b/templates/oam/workloads/1.6.1/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.1/destinationrule.istio_definition.json deleted file mode 100644 index 73132cc03..000000000 --- a/templates/oam/workloads/1.6.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66245af56 --- /dev/null +++ b/templates/oam/workloads/1.6.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.1/envoyfilter.istio_definition.json deleted file mode 100644 index dea29320d..000000000 --- a/templates/oam/workloads/1.6.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..df964c3bb --- /dev/null +++ b/templates/oam/workloads/1.6.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/gateway.istio_definition.json b/templates/oam/workloads/1.6.1/gateway.istio_definition.json deleted file mode 100644 index a56ea4595..000000000 --- a/templates/oam/workloads/1.6.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..47cb3d1aa --- /dev/null +++ b/templates/oam/workloads/1.6.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.1/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/handler.istio_definition.json b/templates/oam/workloads/1.6.1/handler.istio_definition.json deleted file mode 100644 index 49edddc64..000000000 --- a/templates/oam/workloads/1.6.1/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..005f96317 --- /dev/null +++ b/templates/oam/workloads/1.6.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.1/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.1/httpapispec.istio_definition.json deleted file mode 100644 index b608eecf1..000000000 --- a/templates/oam/workloads/1.6.1/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0636754c8 --- /dev/null +++ b/templates/oam/workloads/1.6.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.1/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.1/httpapispecbinding.istio_definition.json deleted file mode 100644 index f22a6a286..000000000 --- a/templates/oam/workloads/1.6.1/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e83e5f8a5 --- /dev/null +++ b/templates/oam/workloads/1.6.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.1/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/instance.istio_definition.json b/templates/oam/workloads/1.6.1/instance.istio_definition.json deleted file mode 100644 index 616c8a52a..000000000 --- a/templates/oam/workloads/1.6.1/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ad14558d2 --- /dev/null +++ b/templates/oam/workloads/1.6.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.1/peerauthentication.istio_definition.json deleted file mode 100644 index 4d81b3757..000000000 --- a/templates/oam/workloads/1.6.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba5015671 --- /dev/null +++ b/templates/oam/workloads/1.6.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.1/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.1/quotaspec.istio_definition.json deleted file mode 100644 index c94a0ac7c..000000000 --- a/templates/oam/workloads/1.6.1/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ac87aabb6 --- /dev/null +++ b/templates/oam/workloads/1.6.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.1/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.1/quotaspecbinding.istio_definition.json deleted file mode 100644 index ec26d9f5a..000000000 --- a/templates/oam/workloads/1.6.1/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cf74035b9 --- /dev/null +++ b/templates/oam/workloads/1.6.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.1/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.1/rbacconfig.istio_definition.json deleted file mode 100644 index 15f57274e..000000000 --- a/templates/oam/workloads/1.6.1/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a94bfca12 --- /dev/null +++ b/templates/oam/workloads/1.6.1/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.1/requestauthentication.istio_definition.json deleted file mode 100644 index 367fd2953..000000000 --- a/templates/oam/workloads/1.6.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..44e1920ef --- /dev/null +++ b/templates/oam/workloads/1.6.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.1/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rule.istio_definition.json b/templates/oam/workloads/1.6.1/rule.istio_definition.json deleted file mode 100644 index 64fcbc882..000000000 --- a/templates/oam/workloads/1.6.1/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..564883591 --- /dev/null +++ b/templates/oam/workloads/1.6.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.1/serviceentry.istio_definition.json deleted file mode 100644 index 044e77ef3..000000000 --- a/templates/oam/workloads/1.6.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5665df48 --- /dev/null +++ b/templates/oam/workloads/1.6.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.1/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.1/servicerole.istio_definition.json b/templates/oam/workloads/1.6.1/servicerole.istio_definition.json deleted file mode 100644 index c7af051bb..000000000 --- a/templates/oam/workloads/1.6.1/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..790f1c856 --- /dev/null +++ b/templates/oam/workloads/1.6.1/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.1/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.1/servicerolebinding.istio_definition.json deleted file mode 100644 index efaa9e5d6..000000000 --- a/templates/oam/workloads/1.6.1/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aadc2f969 --- /dev/null +++ b/templates/oam/workloads/1.6.1/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/sidecar.istio_definition.json b/templates/oam/workloads/1.6.1/sidecar.istio_definition.json deleted file mode 100644 index b4c63184f..000000000 --- a/templates/oam/workloads/1.6.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e075caed7 --- /dev/null +++ b/templates/oam/workloads/1.6.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.1/virtualservice.istio_definition.json deleted file mode 100644 index 51bdef424..000000000 --- a/templates/oam/workloads/1.6.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a89fceb24 --- /dev/null +++ b/templates/oam/workloads/1.6.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.1/workloadentry.istio_definition.json deleted file mode 100644 index f103d6ff6..000000000 --- a/templates/oam/workloads/1.6.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..60e14c47c --- /dev/null +++ b/templates/oam/workloads/1.6.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.10/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.10/attributemanifest.istio_definition.json deleted file mode 100644 index e88db61cb..000000000 --- a/templates/oam/workloads/1.6.10/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.10/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.10/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.10/authorizationpolicy.istio_definition.json deleted file mode 100644 index e4cc5615f..000000000 --- a/templates/oam/workloads/1.6.10/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..deef6ea8c --- /dev/null +++ b/templates/oam/workloads/1.6.10/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.10/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.10/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.10/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 78f765dd9..000000000 --- a/templates/oam/workloads/1.6.10/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.10/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.10/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.10/destinationrule.istio_definition.json deleted file mode 100644 index 0a6dfe715..000000000 --- a/templates/oam/workloads/1.6.10/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..696821635 --- /dev/null +++ b/templates/oam/workloads/1.6.10/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.10/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.10/envoyfilter.istio_definition.json deleted file mode 100644 index f35344c3a..000000000 --- a/templates/oam/workloads/1.6.10/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..94ed7ee05 --- /dev/null +++ b/templates/oam/workloads/1.6.10/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.10/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/gateway.istio_definition.json b/templates/oam/workloads/1.6.10/gateway.istio_definition.json deleted file mode 100644 index a891cfe90..000000000 --- a/templates/oam/workloads/1.6.10/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d6dca769e --- /dev/null +++ b/templates/oam/workloads/1.6.10/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.10/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/handler.istio_definition.json b/templates/oam/workloads/1.6.10/handler.istio_definition.json deleted file mode 100644 index 62fdcc30c..000000000 --- a/templates/oam/workloads/1.6.10/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.10/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.10/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.10/httpapispec.istio_definition.json deleted file mode 100644 index a8d8b0277..000000000 --- a/templates/oam/workloads/1.6.10/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.10/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.10/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.10/httpapispecbinding.istio_definition.json deleted file mode 100644 index a537a60f6..000000000 --- a/templates/oam/workloads/1.6.10/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.10/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.10/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/instance.istio_definition.json b/templates/oam/workloads/1.6.10/instance.istio_definition.json deleted file mode 100644 index 8e867f9df..000000000 --- a/templates/oam/workloads/1.6.10/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.10/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.10/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.10/peerauthentication.istio_definition.json deleted file mode 100644 index 2d2de0b72..000000000 --- a/templates/oam/workloads/1.6.10/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e7d0b8fb3 --- /dev/null +++ b/templates/oam/workloads/1.6.10/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.10/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.10/quotaspec.istio_definition.json deleted file mode 100644 index 3b9707398..000000000 --- a/templates/oam/workloads/1.6.10/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.10/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.10/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.10/quotaspecbinding.istio_definition.json deleted file mode 100644 index 5a80b5356..000000000 --- a/templates/oam/workloads/1.6.10/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.10/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.10/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.10/rbacconfig.istio_definition.json deleted file mode 100644 index fab080ac1..000000000 --- a/templates/oam/workloads/1.6.10/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.10/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.10/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.10/requestauthentication.istio_definition.json deleted file mode 100644 index ed4a436b5..000000000 --- a/templates/oam/workloads/1.6.10/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f6bd28e9f --- /dev/null +++ b/templates/oam/workloads/1.6.10/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.10/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/rule.istio_definition.json b/templates/oam/workloads/1.6.10/rule.istio_definition.json deleted file mode 100644 index 910917029..000000000 --- a/templates/oam/workloads/1.6.10/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.10/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.10/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.10/serviceentry.istio_definition.json deleted file mode 100644 index 738eaa0ee..000000000 --- a/templates/oam/workloads/1.6.10/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f10272893 --- /dev/null +++ b/templates/oam/workloads/1.6.10/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.10/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.10/servicerole.istio_definition.json b/templates/oam/workloads/1.6.10/servicerole.istio_definition.json deleted file mode 100644 index a7b85b37a..000000000 --- a/templates/oam/workloads/1.6.10/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.10/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.10/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.10/servicerolebinding.istio_definition.json deleted file mode 100644 index 91ab42260..000000000 --- a/templates/oam/workloads/1.6.10/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.10/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.10/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/sidecar.istio_definition.json b/templates/oam/workloads/1.6.10/sidecar.istio_definition.json deleted file mode 100644 index 79efd062d..000000000 --- a/templates/oam/workloads/1.6.10/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7668e41ec --- /dev/null +++ b/templates/oam/workloads/1.6.10/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.10/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.10/virtualservice.istio_definition.json deleted file mode 100644 index d71ac6040..000000000 --- a/templates/oam/workloads/1.6.10/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7e9fb86e1 --- /dev/null +++ b/templates/oam/workloads/1.6.10/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.10/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.10/workloadentry.istio_definition.json deleted file mode 100644 index 2bbe62595..000000000 --- a/templates/oam/workloads/1.6.10/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.10", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..786524475 --- /dev/null +++ b/templates/oam/workloads/1.6.10/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..05d720f1d --- /dev/null +++ b/templates/oam/workloads/1.6.10/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.6.10" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.11/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.11/attributemanifest.istio_definition.json deleted file mode 100644 index 8820de540..000000000 --- a/templates/oam/workloads/1.6.11/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.11/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.11/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.11/authorizationpolicy.istio_definition.json deleted file mode 100644 index ae40beaed..000000000 --- a/templates/oam/workloads/1.6.11/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d7b6e76d4 --- /dev/null +++ b/templates/oam/workloads/1.6.11/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.11/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.11/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.11/clusterrbacconfig.istio_definition.json deleted file mode 100644 index a98e6ee0c..000000000 --- a/templates/oam/workloads/1.6.11/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.11/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.11/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.11/destinationrule.istio_definition.json deleted file mode 100644 index abd8350f3..000000000 --- a/templates/oam/workloads/1.6.11/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..648e8ccf4 --- /dev/null +++ b/templates/oam/workloads/1.6.11/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.11/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.11/envoyfilter.istio_definition.json deleted file mode 100644 index e5da710ee..000000000 --- a/templates/oam/workloads/1.6.11/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ebdef6d46 --- /dev/null +++ b/templates/oam/workloads/1.6.11/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.11/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/gateway.istio_definition.json b/templates/oam/workloads/1.6.11/gateway.istio_definition.json deleted file mode 100644 index c93942814..000000000 --- a/templates/oam/workloads/1.6.11/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0a1cbd4ae --- /dev/null +++ b/templates/oam/workloads/1.6.11/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.11/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/handler.istio_definition.json b/templates/oam/workloads/1.6.11/handler.istio_definition.json deleted file mode 100644 index 361c0a53e..000000000 --- a/templates/oam/workloads/1.6.11/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.11/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.11/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.11/httpapispec.istio_definition.json deleted file mode 100644 index 61f4cee72..000000000 --- a/templates/oam/workloads/1.6.11/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.11/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.11/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.11/httpapispecbinding.istio_definition.json deleted file mode 100644 index 57f0f22cc..000000000 --- a/templates/oam/workloads/1.6.11/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.11/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.11/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/instance.istio_definition.json b/templates/oam/workloads/1.6.11/instance.istio_definition.json deleted file mode 100644 index 33f234169..000000000 --- a/templates/oam/workloads/1.6.11/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.11/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.11/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.11/peerauthentication.istio_definition.json deleted file mode 100644 index 54b5799aa..000000000 --- a/templates/oam/workloads/1.6.11/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2a522cdb9 --- /dev/null +++ b/templates/oam/workloads/1.6.11/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.11/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.11/quotaspec.istio_definition.json deleted file mode 100644 index f357c0b27..000000000 --- a/templates/oam/workloads/1.6.11/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.11/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.11/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.11/quotaspecbinding.istio_definition.json deleted file mode 100644 index 40f9dbeb6..000000000 --- a/templates/oam/workloads/1.6.11/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.11/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.11/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.11/rbacconfig.istio_definition.json deleted file mode 100644 index b00136dc6..000000000 --- a/templates/oam/workloads/1.6.11/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.11/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.11/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.11/requestauthentication.istio_definition.json deleted file mode 100644 index 27b28baac..000000000 --- a/templates/oam/workloads/1.6.11/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bc3660941 --- /dev/null +++ b/templates/oam/workloads/1.6.11/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.11/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/rule.istio_definition.json b/templates/oam/workloads/1.6.11/rule.istio_definition.json deleted file mode 100644 index e52d9ca58..000000000 --- a/templates/oam/workloads/1.6.11/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.11/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.11/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.11/serviceentry.istio_definition.json deleted file mode 100644 index 8d2222d2a..000000000 --- a/templates/oam/workloads/1.6.11/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..60877c708 --- /dev/null +++ b/templates/oam/workloads/1.6.11/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.11/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.11/servicerole.istio_definition.json b/templates/oam/workloads/1.6.11/servicerole.istio_definition.json deleted file mode 100644 index c8804d255..000000000 --- a/templates/oam/workloads/1.6.11/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.11/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.11/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.11/servicerolebinding.istio_definition.json deleted file mode 100644 index 3f15bfca8..000000000 --- a/templates/oam/workloads/1.6.11/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.11/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.11/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/sidecar.istio_definition.json b/templates/oam/workloads/1.6.11/sidecar.istio_definition.json deleted file mode 100644 index a81b4afd2..000000000 --- a/templates/oam/workloads/1.6.11/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92551196a --- /dev/null +++ b/templates/oam/workloads/1.6.11/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.11/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.11/virtualservice.istio_definition.json deleted file mode 100644 index 32532e807..000000000 --- a/templates/oam/workloads/1.6.11/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e0ad8e1f7 --- /dev/null +++ b/templates/oam/workloads/1.6.11/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.11/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.11/workloadentry.istio_definition.json deleted file mode 100644 index 88808d93e..000000000 --- a/templates/oam/workloads/1.6.11/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.11", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fae3cc8d8 --- /dev/null +++ b/templates/oam/workloads/1.6.11/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..853e4aa1e --- /dev/null +++ b/templates/oam/workloads/1.6.11/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.6.11" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.12/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.12/attributemanifest.istio_definition.json deleted file mode 100644 index 0a40876b7..000000000 --- a/templates/oam/workloads/1.6.12/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.12/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.12/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.12/authorizationpolicy.istio_definition.json deleted file mode 100644 index 93226156d..000000000 --- a/templates/oam/workloads/1.6.12/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..17a14cd8b --- /dev/null +++ b/templates/oam/workloads/1.6.12/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.12/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.12/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.12/clusterrbacconfig.istio_definition.json deleted file mode 100644 index af6738ca9..000000000 --- a/templates/oam/workloads/1.6.12/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.12/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.12/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.12/destinationrule.istio_definition.json deleted file mode 100644 index b0339a377..000000000 --- a/templates/oam/workloads/1.6.12/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5eccacc0 --- /dev/null +++ b/templates/oam/workloads/1.6.12/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.12/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.12/envoyfilter.istio_definition.json deleted file mode 100644 index 1a8200c42..000000000 --- a/templates/oam/workloads/1.6.12/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da04a08cd --- /dev/null +++ b/templates/oam/workloads/1.6.12/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.12/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/gateway.istio_definition.json b/templates/oam/workloads/1.6.12/gateway.istio_definition.json deleted file mode 100644 index af1db0498..000000000 --- a/templates/oam/workloads/1.6.12/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e7766d891 --- /dev/null +++ b/templates/oam/workloads/1.6.12/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.12/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/handler.istio_definition.json b/templates/oam/workloads/1.6.12/handler.istio_definition.json deleted file mode 100644 index 5a8c5b028..000000000 --- a/templates/oam/workloads/1.6.12/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.12/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.12/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.12/httpapispec.istio_definition.json deleted file mode 100644 index c03457b9d..000000000 --- a/templates/oam/workloads/1.6.12/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.12/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.12/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.12/httpapispecbinding.istio_definition.json deleted file mode 100644 index e652644ce..000000000 --- a/templates/oam/workloads/1.6.12/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.12/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.12/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/instance.istio_definition.json b/templates/oam/workloads/1.6.12/instance.istio_definition.json deleted file mode 100644 index 0dcb0542c..000000000 --- a/templates/oam/workloads/1.6.12/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.12/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.12/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.12/peerauthentication.istio_definition.json deleted file mode 100644 index e9b7a52b4..000000000 --- a/templates/oam/workloads/1.6.12/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..189252258 --- /dev/null +++ b/templates/oam/workloads/1.6.12/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.12/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.12/quotaspec.istio_definition.json deleted file mode 100644 index 058244dc1..000000000 --- a/templates/oam/workloads/1.6.12/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.12/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.12/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.12/quotaspecbinding.istio_definition.json deleted file mode 100644 index 994f73cd8..000000000 --- a/templates/oam/workloads/1.6.12/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.12/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.12/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.12/rbacconfig.istio_definition.json deleted file mode 100644 index c58394ede..000000000 --- a/templates/oam/workloads/1.6.12/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.12/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.12/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.12/requestauthentication.istio_definition.json deleted file mode 100644 index aa5e8835e..000000000 --- a/templates/oam/workloads/1.6.12/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cac141ebc --- /dev/null +++ b/templates/oam/workloads/1.6.12/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.12/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/rule.istio_definition.json b/templates/oam/workloads/1.6.12/rule.istio_definition.json deleted file mode 100644 index f05be16c4..000000000 --- a/templates/oam/workloads/1.6.12/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.12/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.12/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.12/serviceentry.istio_definition.json deleted file mode 100644 index 778033063..000000000 --- a/templates/oam/workloads/1.6.12/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cc5b18f4c --- /dev/null +++ b/templates/oam/workloads/1.6.12/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.12/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.12/servicerole.istio_definition.json b/templates/oam/workloads/1.6.12/servicerole.istio_definition.json deleted file mode 100644 index 2019943f8..000000000 --- a/templates/oam/workloads/1.6.12/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.12/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.12/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.12/servicerolebinding.istio_definition.json deleted file mode 100644 index 3c184bb97..000000000 --- a/templates/oam/workloads/1.6.12/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.12/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.12/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/sidecar.istio_definition.json b/templates/oam/workloads/1.6.12/sidecar.istio_definition.json deleted file mode 100644 index 9fe1b0835..000000000 --- a/templates/oam/workloads/1.6.12/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..07e83776e --- /dev/null +++ b/templates/oam/workloads/1.6.12/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.12/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.12/virtualservice.istio_definition.json deleted file mode 100644 index 090ef5a2d..000000000 --- a/templates/oam/workloads/1.6.12/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..50842819a --- /dev/null +++ b/templates/oam/workloads/1.6.12/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.12/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.12/workloadentry.istio_definition.json deleted file mode 100644 index 8c84e78d0..000000000 --- a/templates/oam/workloads/1.6.12/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.12", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bee7eb490 --- /dev/null +++ b/templates/oam/workloads/1.6.12/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ab9e540d4 --- /dev/null +++ b/templates/oam/workloads/1.6.12/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.6.12" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.13/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.13/attributemanifest.istio_definition.json deleted file mode 100644 index 954c402ef..000000000 --- a/templates/oam/workloads/1.6.13/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.13/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.13/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.13/authorizationpolicy.istio_definition.json deleted file mode 100644 index 31fbf1baa..000000000 --- a/templates/oam/workloads/1.6.13/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fbb39bca3 --- /dev/null +++ b/templates/oam/workloads/1.6.13/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.13/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.13/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 3ec735b3b..000000000 --- a/templates/oam/workloads/1.6.13/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.13/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.13/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.13/destinationrule.istio_definition.json deleted file mode 100644 index 00d19af37..000000000 --- a/templates/oam/workloads/1.6.13/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8d65db6c --- /dev/null +++ b/templates/oam/workloads/1.6.13/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.13/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.13/envoyfilter.istio_definition.json deleted file mode 100644 index d11a9b2ac..000000000 --- a/templates/oam/workloads/1.6.13/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..663833413 --- /dev/null +++ b/templates/oam/workloads/1.6.13/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.13/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/gateway.istio_definition.json b/templates/oam/workloads/1.6.13/gateway.istio_definition.json deleted file mode 100644 index 428427d0e..000000000 --- a/templates/oam/workloads/1.6.13/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..438d49de2 --- /dev/null +++ b/templates/oam/workloads/1.6.13/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.13/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/handler.istio_definition.json b/templates/oam/workloads/1.6.13/handler.istio_definition.json deleted file mode 100644 index b67c433fb..000000000 --- a/templates/oam/workloads/1.6.13/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.13/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.13/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.13/httpapispec.istio_definition.json deleted file mode 100644 index 084e748ed..000000000 --- a/templates/oam/workloads/1.6.13/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.13/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.13/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.13/httpapispecbinding.istio_definition.json deleted file mode 100644 index bc1771d1a..000000000 --- a/templates/oam/workloads/1.6.13/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.13/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.13/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.13/instance.istio_definition.json b/templates/oam/workloads/1.6.13/instance.istio_definition.json deleted file mode 100644 index 0ffae1392..000000000 --- a/templates/oam/workloads/1.6.13/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.13/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.13/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.13/peerauthentication.istio_definition.json deleted file mode 100644 index 385821fca..000000000 --- a/templates/oam/workloads/1.6.13/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ddb3f5e1f --- /dev/null +++ b/templates/oam/workloads/1.6.13/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.13/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.13/quotaspec.istio_definition.json deleted file mode 100644 index abff7390a..000000000 --- a/templates/oam/workloads/1.6.13/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.13/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.13/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.13/quotaspecbinding.istio_definition.json deleted file mode 100644 index 132c15b9a..000000000 --- a/templates/oam/workloads/1.6.13/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.13/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.13/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.13/rbacconfig.istio_definition.json deleted file mode 100644 index cbea41e82..000000000 --- a/templates/oam/workloads/1.6.13/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.13/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.13/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.13/requestauthentication.istio_definition.json deleted file mode 100644 index 160abc5d4..000000000 --- a/templates/oam/workloads/1.6.13/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bafb39575 --- /dev/null +++ b/templates/oam/workloads/1.6.13/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.13/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/rule.istio_definition.json b/templates/oam/workloads/1.6.13/rule.istio_definition.json deleted file mode 100644 index b1bf51742..000000000 --- a/templates/oam/workloads/1.6.13/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.13/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.13/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.13/serviceentry.istio_definition.json deleted file mode 100644 index c599f95c2..000000000 --- a/templates/oam/workloads/1.6.13/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b4b3aeb8e --- /dev/null +++ b/templates/oam/workloads/1.6.13/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.13/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.13/servicerole.istio_definition.json b/templates/oam/workloads/1.6.13/servicerole.istio_definition.json deleted file mode 100644 index 17a7eddca..000000000 --- a/templates/oam/workloads/1.6.13/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.13/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.13/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.13/servicerolebinding.istio_definition.json deleted file mode 100644 index caa7f13f0..000000000 --- a/templates/oam/workloads/1.6.13/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.13/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.13/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/sidecar.istio_definition.json b/templates/oam/workloads/1.6.13/sidecar.istio_definition.json deleted file mode 100644 index 42cdd212e..000000000 --- a/templates/oam/workloads/1.6.13/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb76f78fa --- /dev/null +++ b/templates/oam/workloads/1.6.13/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.13/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.13/virtualservice.istio_definition.json deleted file mode 100644 index 55214637c..000000000 --- a/templates/oam/workloads/1.6.13/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..60a51b08a --- /dev/null +++ b/templates/oam/workloads/1.6.13/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.13/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.13/workloadentry.istio_definition.json deleted file mode 100644 index 2f11bded2..000000000 --- a/templates/oam/workloads/1.6.13/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.13", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..84f934067 --- /dev/null +++ b/templates/oam/workloads/1.6.13/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2879246da --- /dev/null +++ b/templates/oam/workloads/1.6.13/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.6.13" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..105a0fb85 --- /dev/null +++ b/templates/oam/workloads/1.6.14/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3ff8547b9 --- /dev/null +++ b/templates/oam/workloads/1.6.14/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b5a85b54 --- /dev/null +++ b/templates/oam/workloads/1.6.14/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..325da1be4 --- /dev/null +++ b/templates/oam/workloads/1.6.14/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d6941b980 --- /dev/null +++ b/templates/oam/workloads/1.6.14/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..177173d31 --- /dev/null +++ b/templates/oam/workloads/1.6.14/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2c5df24f3 --- /dev/null +++ b/templates/oam/workloads/1.6.14/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..95a571caf --- /dev/null +++ b/templates/oam/workloads/1.6.14/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd07b321e --- /dev/null +++ b/templates/oam/workloads/1.6.14/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..23e11864c --- /dev/null +++ b/templates/oam/workloads/1.6.14/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58accab54 --- /dev/null +++ b/templates/oam/workloads/1.6.14/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.6.14" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.2/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.2/attributemanifest.istio_definition.json deleted file mode 100644 index 0cc5e4f7f..000000000 --- a/templates/oam/workloads/1.6.2/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..436fc1511 --- /dev/null +++ b/templates/oam/workloads/1.6.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index 0167cac54..000000000 --- a/templates/oam/workloads/1.6.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..83aadaf53 --- /dev/null +++ b/templates/oam/workloads/1.6.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.2/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.2/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 72da540e9..000000000 --- a/templates/oam/workloads/1.6.2/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..815360e2d --- /dev/null +++ b/templates/oam/workloads/1.6.2/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.2/destinationrule.istio_definition.json deleted file mode 100644 index 407990893..000000000 --- a/templates/oam/workloads/1.6.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8557a7897 --- /dev/null +++ b/templates/oam/workloads/1.6.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.2/envoyfilter.istio_definition.json deleted file mode 100644 index d06428408..000000000 --- a/templates/oam/workloads/1.6.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fea8f7ef4 --- /dev/null +++ b/templates/oam/workloads/1.6.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/gateway.istio_definition.json b/templates/oam/workloads/1.6.2/gateway.istio_definition.json deleted file mode 100644 index 335207134..000000000 --- a/templates/oam/workloads/1.6.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..26a18a60d --- /dev/null +++ b/templates/oam/workloads/1.6.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.2/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/handler.istio_definition.json b/templates/oam/workloads/1.6.2/handler.istio_definition.json deleted file mode 100644 index 52d93f0c1..000000000 --- a/templates/oam/workloads/1.6.2/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51f906007 --- /dev/null +++ b/templates/oam/workloads/1.6.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.2/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.2/httpapispec.istio_definition.json deleted file mode 100644 index bc59ee847..000000000 --- a/templates/oam/workloads/1.6.2/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e3ea7f79f --- /dev/null +++ b/templates/oam/workloads/1.6.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.2/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.2/httpapispecbinding.istio_definition.json deleted file mode 100644 index b035780dd..000000000 --- a/templates/oam/workloads/1.6.2/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de4a83807 --- /dev/null +++ b/templates/oam/workloads/1.6.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.2/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.2/instance.istio_definition.json b/templates/oam/workloads/1.6.2/instance.istio_definition.json deleted file mode 100644 index 151b5795f..000000000 --- a/templates/oam/workloads/1.6.2/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..251d562c9 --- /dev/null +++ b/templates/oam/workloads/1.6.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.2/peerauthentication.istio_definition.json deleted file mode 100644 index 174612a40..000000000 --- a/templates/oam/workloads/1.6.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2b52b89a --- /dev/null +++ b/templates/oam/workloads/1.6.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.2/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.2/quotaspec.istio_definition.json deleted file mode 100644 index f10018138..000000000 --- a/templates/oam/workloads/1.6.2/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ece60e323 --- /dev/null +++ b/templates/oam/workloads/1.6.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.2/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.2/quotaspecbinding.istio_definition.json deleted file mode 100644 index 873faa9fe..000000000 --- a/templates/oam/workloads/1.6.2/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e4834c92 --- /dev/null +++ b/templates/oam/workloads/1.6.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.2/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.2/rbacconfig.istio_definition.json deleted file mode 100644 index 62f426b42..000000000 --- a/templates/oam/workloads/1.6.2/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b60abec16 --- /dev/null +++ b/templates/oam/workloads/1.6.2/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.2/requestauthentication.istio_definition.json deleted file mode 100644 index 206426521..000000000 --- a/templates/oam/workloads/1.6.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9c16565a0 --- /dev/null +++ b/templates/oam/workloads/1.6.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.2/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rule.istio_definition.json b/templates/oam/workloads/1.6.2/rule.istio_definition.json deleted file mode 100644 index 991821cb7..000000000 --- a/templates/oam/workloads/1.6.2/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b0721dee7 --- /dev/null +++ b/templates/oam/workloads/1.6.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.2/serviceentry.istio_definition.json deleted file mode 100644 index 5b4a79c43..000000000 --- a/templates/oam/workloads/1.6.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bbce2cc47 --- /dev/null +++ b/templates/oam/workloads/1.6.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.2/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.2/servicerole.istio_definition.json b/templates/oam/workloads/1.6.2/servicerole.istio_definition.json deleted file mode 100644 index a7f1f65f7..000000000 --- a/templates/oam/workloads/1.6.2/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..40112212b --- /dev/null +++ b/templates/oam/workloads/1.6.2/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.2/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.2/servicerolebinding.istio_definition.json deleted file mode 100644 index fe5399d48..000000000 --- a/templates/oam/workloads/1.6.2/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..33249f03f --- /dev/null +++ b/templates/oam/workloads/1.6.2/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/sidecar.istio_definition.json b/templates/oam/workloads/1.6.2/sidecar.istio_definition.json deleted file mode 100644 index ef6ec397c..000000000 --- a/templates/oam/workloads/1.6.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9fd88f2e4 --- /dev/null +++ b/templates/oam/workloads/1.6.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.2/virtualservice.istio_definition.json deleted file mode 100644 index 2580d81fb..000000000 --- a/templates/oam/workloads/1.6.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2c87371a0 --- /dev/null +++ b/templates/oam/workloads/1.6.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.2/workloadentry.istio_definition.json deleted file mode 100644 index d7a1ac749..000000000 --- a/templates/oam/workloads/1.6.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..35fe1c0f5 --- /dev/null +++ b/templates/oam/workloads/1.6.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.3/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.3/attributemanifest.istio_definition.json deleted file mode 100644 index 789f9851d..000000000 --- a/templates/oam/workloads/1.6.3/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e317843b7 --- /dev/null +++ b/templates/oam/workloads/1.6.3/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index 3aaeb717f..000000000 --- a/templates/oam/workloads/1.6.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a9504cb2c --- /dev/null +++ b/templates/oam/workloads/1.6.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.3/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.3/clusterrbacconfig.istio_definition.json deleted file mode 100644 index c8d914d99..000000000 --- a/templates/oam/workloads/1.6.3/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..37ae1aba2 --- /dev/null +++ b/templates/oam/workloads/1.6.3/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.3/destinationrule.istio_definition.json deleted file mode 100644 index 9e3f49fe9..000000000 --- a/templates/oam/workloads/1.6.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e243ccb3 --- /dev/null +++ b/templates/oam/workloads/1.6.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.3/envoyfilter.istio_definition.json deleted file mode 100644 index 1e550c315..000000000 --- a/templates/oam/workloads/1.6.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..920e23457 --- /dev/null +++ b/templates/oam/workloads/1.6.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/gateway.istio_definition.json b/templates/oam/workloads/1.6.3/gateway.istio_definition.json deleted file mode 100644 index c7db6dd05..000000000 --- a/templates/oam/workloads/1.6.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..35129c53c --- /dev/null +++ b/templates/oam/workloads/1.6.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.3/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/handler.istio_definition.json b/templates/oam/workloads/1.6.3/handler.istio_definition.json deleted file mode 100644 index 939050964..000000000 --- a/templates/oam/workloads/1.6.3/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.3/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.3/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1d534cc75 --- /dev/null +++ b/templates/oam/workloads/1.6.3/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.3/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.3/httpapispec.istio_definition.json deleted file mode 100644 index 33925f27e..000000000 --- a/templates/oam/workloads/1.6.3/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..24a9a01c0 --- /dev/null +++ b/templates/oam/workloads/1.6.3/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.3/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.3/httpapispecbinding.istio_definition.json deleted file mode 100644 index 2fff21877..000000000 --- a/templates/oam/workloads/1.6.3/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0dab96f34 --- /dev/null +++ b/templates/oam/workloads/1.6.3/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.3/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/instance.istio_definition.json b/templates/oam/workloads/1.6.3/instance.istio_definition.json deleted file mode 100644 index 42a2f7698..000000000 --- a/templates/oam/workloads/1.6.3/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.3/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.3/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6ff0ca885 --- /dev/null +++ b/templates/oam/workloads/1.6.3/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.3/peerauthentication.istio_definition.json deleted file mode 100644 index 83689a29b..000000000 --- a/templates/oam/workloads/1.6.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..509c4e5d0 --- /dev/null +++ b/templates/oam/workloads/1.6.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.3/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.3/quotaspec.istio_definition.json deleted file mode 100644 index 97df2ed72..000000000 --- a/templates/oam/workloads/1.6.3/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b6dcdc69f --- /dev/null +++ b/templates/oam/workloads/1.6.3/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.3/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.3/quotaspecbinding.istio_definition.json deleted file mode 100644 index 0ce5eafad..000000000 --- a/templates/oam/workloads/1.6.3/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6873cf0ae --- /dev/null +++ b/templates/oam/workloads/1.6.3/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.3/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.3/rbacconfig.istio_definition.json deleted file mode 100644 index 9329f113f..000000000 --- a/templates/oam/workloads/1.6.3/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd1b18eee --- /dev/null +++ b/templates/oam/workloads/1.6.3/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.3/requestauthentication.istio_definition.json deleted file mode 100644 index 6e9aa1134..000000000 --- a/templates/oam/workloads/1.6.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f081fd2be --- /dev/null +++ b/templates/oam/workloads/1.6.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.3/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rule.istio_definition.json b/templates/oam/workloads/1.6.3/rule.istio_definition.json deleted file mode 100644 index 364513d56..000000000 --- a/templates/oam/workloads/1.6.3/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.3/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.3/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ff835b31e --- /dev/null +++ b/templates/oam/workloads/1.6.3/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.3/serviceentry.istio_definition.json deleted file mode 100644 index ec42f3d44..000000000 --- a/templates/oam/workloads/1.6.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..61039cbcd --- /dev/null +++ b/templates/oam/workloads/1.6.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.3/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.3/servicerole.istio_definition.json b/templates/oam/workloads/1.6.3/servicerole.istio_definition.json deleted file mode 100644 index b7cd59831..000000000 --- a/templates/oam/workloads/1.6.3/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9418e6875 --- /dev/null +++ b/templates/oam/workloads/1.6.3/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.3/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.3/servicerolebinding.istio_definition.json deleted file mode 100644 index 1187f3acb..000000000 --- a/templates/oam/workloads/1.6.3/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3038ed5ea --- /dev/null +++ b/templates/oam/workloads/1.6.3/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/sidecar.istio_definition.json b/templates/oam/workloads/1.6.3/sidecar.istio_definition.json deleted file mode 100644 index 7dc178984..000000000 --- a/templates/oam/workloads/1.6.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8efba5c4a --- /dev/null +++ b/templates/oam/workloads/1.6.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.3/virtualservice.istio_definition.json deleted file mode 100644 index 087252132..000000000 --- a/templates/oam/workloads/1.6.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7d0581faa --- /dev/null +++ b/templates/oam/workloads/1.6.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.3/workloadentry.istio_definition.json deleted file mode 100644 index c95aecd8e..000000000 --- a/templates/oam/workloads/1.6.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..081483d73 --- /dev/null +++ b/templates/oam/workloads/1.6.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.4/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.4/attributemanifest.istio_definition.json deleted file mode 100644 index 903315faf..000000000 --- a/templates/oam/workloads/1.6.4/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..32c161c6c --- /dev/null +++ b/templates/oam/workloads/1.6.4/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index b70d26570..000000000 --- a/templates/oam/workloads/1.6.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e49d9aa9f --- /dev/null +++ b/templates/oam/workloads/1.6.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.4/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.4/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.4/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 0b796c55c..000000000 --- a/templates/oam/workloads/1.6.4/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..d58ff91b8 --- /dev/null +++ b/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Cluster Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..08d6f5fe0 --- /dev/null +++ b/templates/oam/workloads/1.6.4/clusterrbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ClusterRbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "clusterrbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ClusterRbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.4/destinationrule.istio_definition.json deleted file mode 100644 index f593a6726..000000000 --- a/templates/oam/workloads/1.6.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..97332a256 --- /dev/null +++ b/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1625 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5aae556b1 --- /dev/null +++ b/templates/oam/workloads/1.6.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.4/envoyfilter.istio_definition.json deleted file mode 100644 index d1fc623cb..000000000 --- a/templates/oam/workloads/1.6.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..79847391a --- /dev/null +++ b/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,278 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b24f6bdf5 --- /dev/null +++ b/templates/oam/workloads/1.6.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 586e06504..000000000 --- a/templates/oam/workloads/1.6.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.4/gateway.istio_definition.json b/templates/oam/workloads/1.6.4/gateway.istio_definition.json deleted file mode 100644 index 67697951f..000000000 --- a/templates/oam/workloads/1.6.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e4f2056f4 --- /dev/null +++ b/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,147 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8bdbe626a --- /dev/null +++ b/templates/oam/workloads/1.6.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.4/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/handler.istio_definition.json b/templates/oam/workloads/1.6.4/handler.istio_definition.json deleted file mode 100644 index cf13bcab8..000000000 --- a/templates/oam/workloads/1.6.4/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.4/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9d841016b --- /dev/null +++ b/templates/oam/workloads/1.6.4/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,298 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object" + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..70d9c1dfd --- /dev/null +++ b/templates/oam/workloads/1.6.4/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.4/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.4/httpapispec.istio_definition.json deleted file mode 100644 index bb6264780..000000000 --- a/templates/oam/workloads/1.6.4/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e695bc9a6 --- /dev/null +++ b/templates/oam/workloads/1.6.4/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.4/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.4/httpapispecbinding.istio_definition.json deleted file mode 100644 index 22228b1c2..000000000 --- a/templates/oam/workloads/1.6.4/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b20a93977 --- /dev/null +++ b/templates/oam/workloads/1.6.4/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.4/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/instance.istio_definition.json b/templates/oam/workloads/1.6.4/instance.istio_definition.json deleted file mode 100644 index 80df7da76..000000000 --- a/templates/oam/workloads/1.6.4/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.4/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f9ac34931 --- /dev/null +++ b/templates/oam/workloads/1.6.4/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,32 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object" + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aaab4c9e9 --- /dev/null +++ b/templates/oam/workloads/1.6.4/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.4/peerauthentication.istio_definition.json deleted file mode 100644 index e79d174b0..000000000 --- a/templates/oam/workloads/1.6.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5438a69ad --- /dev/null +++ b/templates/oam/workloads/1.6.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.4/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.4/quotaspec.istio_definition.json deleted file mode 100644 index 3993242ac..000000000 --- a/templates/oam/workloads/1.6.4/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..545fa15b6 --- /dev/null +++ b/templates/oam/workloads/1.6.4/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.4/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.4/quotaspecbinding.istio_definition.json deleted file mode 100644 index e4c8a70d6..000000000 --- a/templates/oam/workloads/1.6.4/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6e18796a5 --- /dev/null +++ b/templates/oam/workloads/1.6.4/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.4/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.4/rbacconfig.istio_definition.json deleted file mode 100644 index 06738c509..000000000 --- a/templates/oam/workloads/1.6.4/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..2b95ec6cb --- /dev/null +++ b/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,68 @@ +{ + "description": "See more details at:", + "properties": { + "enforcementMode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "exclusion": { + "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "inclusion": { + "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", + "properties": { + "namespaces": { + "description": "A list of namespaces.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "services": { + "description": "A list of services.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "mode": { + "description": "Istio RBAC mode.", + "enum": [ + "OFF", + "ON", + "ON_WITH_INCLUSION", + "ON_WITH_EXCLUSION" + ], + "type": "string" + } + }, + "title": "Rbac Config", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io_definition.json new file mode 100755 index 000000000..51ba6c40f --- /dev/null +++ b/templates/oam/workloads/1.6.4/rbacconfig.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RbacConfig", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rbacconfig.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "RbacConfig", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.4/requestauthentication.istio_definition.json deleted file mode 100644 index f948f5f42..000000000 --- a/templates/oam/workloads/1.6.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f9edc13d2 --- /dev/null +++ b/templates/oam/workloads/1.6.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.4/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rule.istio_definition.json b/templates/oam/workloads/1.6.4/rule.istio_definition.json deleted file mode 100644 index ea6a4dac8..000000000 --- a/templates/oam/workloads/1.6.4/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.4/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.4/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a25c5186d --- /dev/null +++ b/templates/oam/workloads/1.6.4/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.4/serviceentry.istio_definition.json deleted file mode 100644 index 9c4948a54..000000000 --- a/templates/oam/workloads/1.6.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e0c3bf4ef --- /dev/null +++ b/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,135 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..74c868d1d --- /dev/null +++ b/templates/oam/workloads/1.6.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.4/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.4/servicerole.istio_definition.json b/templates/oam/workloads/1.6.4/servicerole.istio_definition.json deleted file mode 100644 index ad479e959..000000000 --- a/templates/oam/workloads/1.6.4/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6d2b719ae --- /dev/null +++ b/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,104 @@ +{ + "description": "See more details at:", + "properties": { + "rules": { + "description": "The set of access rules (permissions) that the role has.", + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9526d0f7 --- /dev/null +++ b/templates/oam/workloads/1.6.4/servicerole.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRole", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerole.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRole", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.4/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.4/servicerolebinding.istio_definition.json deleted file mode 100644 index b7ebfd2ce..000000000 --- a/templates/oam/workloads/1.6.4/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4b938d426 --- /dev/null +++ b/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,212 @@ +{ + "description": "See more details at:", + "properties": { + "actions": { + "items": { + "properties": { + "constraints": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "Key of the constraint.", + "format": "string", + "type": "string" + }, + "values": { + "description": "List of valid values for the constraint.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "services": { + "description": "A list of service names.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "mode": { + "enum": [ + "ENFORCED", + "PERMISSIVE" + ], + "type": "string" + }, + "role": { + "format": "string", + "type": "string" + }, + "roleRef": { + "description": "Reference to the ServiceRole object.", + "properties": { + "kind": { + "description": "The type of the role being referenced.", + "format": "string", + "type": "string" + }, + "name": { + "description": "The name of the ServiceRole object being referenced.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "subjects": { + "description": "List of subjects that are assigned the ServiceRole object.", + "items": { + "properties": { + "group": { + "format": "string", + "type": "string" + }, + "groups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ips": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "names": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notGroups": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIps": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "properties": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional.", + "type": "object" + }, + "user": { + "description": "Optional.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Service Role Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e870e7f4 --- /dev/null +++ b/templates/oam/workloads/1.6.4/servicerolebinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceRoleBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "servicerolebinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "rbac.istio.io/v1alpha1", + "k8sKind": "ServiceRoleBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/sidecar.istio_definition.json b/templates/oam/workloads/1.6.4/sidecar.istio_definition.json deleted file mode 100644 index bfd224096..000000000 --- a/templates/oam/workloads/1.6.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cc3d9b498 --- /dev/null +++ b/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,409 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "localhostServerTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "localhostClientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "localhost": { + "properties": { + "clientTls": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "serverTls": { + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..670d08a42 --- /dev/null +++ b/templates/oam/workloads/1.6.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.4/virtualservice.istio_definition.json deleted file mode 100644 index bba9bee7b..000000000 --- a/templates/oam/workloads/1.6.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3bc8299ff --- /dev/null +++ b/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1170 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..094520677 --- /dev/null +++ b/templates/oam/workloads/1.6.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.4/workloadentry.istio_definition.json deleted file mode 100644 index cc1f93af4..000000000 --- a/templates/oam/workloads/1.6.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..93c8f20ea --- /dev/null +++ b/templates/oam/workloads/1.6.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.5/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.5/attributemanifest.istio_definition.json deleted file mode 100644 index db9d97fda..000000000 --- a/templates/oam/workloads/1.6.5/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9784c089a --- /dev/null +++ b/templates/oam/workloads/1.6.5/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.5/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.5/authorizationpolicy.istio_definition.json deleted file mode 100644 index 8c6beb751..000000000 --- a/templates/oam/workloads/1.6.5/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..41151dd9b --- /dev/null +++ b/templates/oam/workloads/1.6.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.5/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.5/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 77bd5e917..000000000 --- a/templates/oam/workloads/1.6.5/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.5/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.5/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.5/destinationrule.istio_definition.json deleted file mode 100644 index 262974c04..000000000 --- a/templates/oam/workloads/1.6.5/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7312a4d0 --- /dev/null +++ b/templates/oam/workloads/1.6.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.5/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.5/envoyfilter.istio_definition.json deleted file mode 100644 index 8d3aaa8ad..000000000 --- a/templates/oam/workloads/1.6.5/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98cc06462 --- /dev/null +++ b/templates/oam/workloads/1.6.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 586e06504..000000000 --- a/templates/oam/workloads/1.6.5/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.5/gateway.istio_definition.json b/templates/oam/workloads/1.6.5/gateway.istio_definition.json deleted file mode 100644 index 40e9261f3..000000000 --- a/templates/oam/workloads/1.6.5/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..207de890e --- /dev/null +++ b/templates/oam/workloads/1.6.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.5/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/handler.istio_definition.json b/templates/oam/workloads/1.6.5/handler.istio_definition.json deleted file mode 100644 index 82cc7d29e..000000000 --- a/templates/oam/workloads/1.6.5/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.5/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.6.5/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6dbf87444 --- /dev/null +++ b/templates/oam/workloads/1.6.5/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.5/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.5/httpapispec.istio_definition.json deleted file mode 100644 index 87cad912c..000000000 --- a/templates/oam/workloads/1.6.5/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..99a7c0159 --- /dev/null +++ b/templates/oam/workloads/1.6.5/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.5/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.5/httpapispecbinding.istio_definition.json deleted file mode 100644 index f1b5b5055..000000000 --- a/templates/oam/workloads/1.6.5/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cb477b4cd --- /dev/null +++ b/templates/oam/workloads/1.6.5/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index c15d39543..000000000 --- a/templates/oam/workloads/1.6.5/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/instance.istio_definition.json b/templates/oam/workloads/1.6.5/instance.istio_definition.json deleted file mode 100644 index 41fbf1a3a..000000000 --- a/templates/oam/workloads/1.6.5/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.5/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.6.5/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58d86e724 --- /dev/null +++ b/templates/oam/workloads/1.6.5/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.5/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.5/peerauthentication.istio_definition.json deleted file mode 100644 index 693e84fb4..000000000 --- a/templates/oam/workloads/1.6.5/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..356ae3e87 --- /dev/null +++ b/templates/oam/workloads/1.6.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.5/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.5/quotaspec.istio_definition.json deleted file mode 100644 index a715da1a9..000000000 --- a/templates/oam/workloads/1.6.5/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f67ba337c --- /dev/null +++ b/templates/oam/workloads/1.6.5/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.5/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.5/quotaspecbinding.istio_definition.json deleted file mode 100644 index f507e2518..000000000 --- a/templates/oam/workloads/1.6.5/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..68326720a --- /dev/null +++ b/templates/oam/workloads/1.6.5/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.5/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.5/rbacconfig.istio_definition.json deleted file mode 100644 index 72dafe703..000000000 --- a/templates/oam/workloads/1.6.5/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.5/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.5/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.5/requestauthentication.istio_definition.json deleted file mode 100644 index 822792126..000000000 --- a/templates/oam/workloads/1.6.5/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..df0e5119f --- /dev/null +++ b/templates/oam/workloads/1.6.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.5/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/rule.istio_definition.json b/templates/oam/workloads/1.6.5/rule.istio_definition.json deleted file mode 100644 index 3fe4d8c38..000000000 --- a/templates/oam/workloads/1.6.5/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.5/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.5/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e10d6ec77 --- /dev/null +++ b/templates/oam/workloads/1.6.5/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.5/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.5/serviceentry.istio_definition.json deleted file mode 100644 index ab9009284..000000000 --- a/templates/oam/workloads/1.6.5/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd7a27fd9 --- /dev/null +++ b/templates/oam/workloads/1.6.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.5/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.5/servicerole.istio_definition.json b/templates/oam/workloads/1.6.5/servicerole.istio_definition.json deleted file mode 100644 index 3ebed9f79..000000000 --- a/templates/oam/workloads/1.6.5/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.5/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.5/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.5/servicerolebinding.istio_definition.json deleted file mode 100644 index 35b3c9911..000000000 --- a/templates/oam/workloads/1.6.5/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.5/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.5/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/sidecar.istio_definition.json b/templates/oam/workloads/1.6.5/sidecar.istio_definition.json deleted file mode 100644 index f86bbecc0..000000000 --- a/templates/oam/workloads/1.6.5/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aa33b2c74 --- /dev/null +++ b/templates/oam/workloads/1.6.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.5/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.5/virtualservice.istio_definition.json deleted file mode 100644 index 0ebab72ec..000000000 --- a/templates/oam/workloads/1.6.5/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aa151bd99 --- /dev/null +++ b/templates/oam/workloads/1.6.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.5/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.5/workloadentry.istio_definition.json deleted file mode 100644 index f14bc98de..000000000 --- a/templates/oam/workloads/1.6.5/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..492dc0923 --- /dev/null +++ b/templates/oam/workloads/1.6.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.6/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.6/attributemanifest.istio_definition.json deleted file mode 100644 index 31a0cc1fb..000000000 --- a/templates/oam/workloads/1.6.6/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e96ad9837 --- /dev/null +++ b/templates/oam/workloads/1.6.6/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.6/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.6/authorizationpolicy.istio_definition.json deleted file mode 100644 index 893f70305..000000000 --- a/templates/oam/workloads/1.6.6/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..14fa7a3a2 --- /dev/null +++ b/templates/oam/workloads/1.6.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.6/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.6/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 88c29ca32..000000000 --- a/templates/oam/workloads/1.6.6/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.6/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.6/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.6/destinationrule.istio_definition.json deleted file mode 100644 index a1c89f159..000000000 --- a/templates/oam/workloads/1.6.6/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7bb556539 --- /dev/null +++ b/templates/oam/workloads/1.6.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.6/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.6/envoyfilter.istio_definition.json deleted file mode 100644 index 141dee6df..000000000 --- a/templates/oam/workloads/1.6.6/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c82ceb1af --- /dev/null +++ b/templates/oam/workloads/1.6.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 586e06504..000000000 --- a/templates/oam/workloads/1.6.6/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.6/gateway.istio_definition.json b/templates/oam/workloads/1.6.6/gateway.istio_definition.json deleted file mode 100644 index b891a4520..000000000 --- a/templates/oam/workloads/1.6.6/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0ef978edb --- /dev/null +++ b/templates/oam/workloads/1.6.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.6/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/handler.istio_definition.json b/templates/oam/workloads/1.6.6/handler.istio_definition.json deleted file mode 100644 index e8d1dada4..000000000 --- a/templates/oam/workloads/1.6.6/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.6/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.6.6/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..58f857e6d --- /dev/null +++ b/templates/oam/workloads/1.6.6/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.6/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.6/httpapispec.istio_definition.json deleted file mode 100644 index 60278de27..000000000 --- a/templates/oam/workloads/1.6.6/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dd0dc76f3 --- /dev/null +++ b/templates/oam/workloads/1.6.6/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.6/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.6/httpapispecbinding.istio_definition.json deleted file mode 100644 index 7e0fdfe00..000000000 --- a/templates/oam/workloads/1.6.6/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1ce0c06ab --- /dev/null +++ b/templates/oam/workloads/1.6.6/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.6/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.6/instance.istio_definition.json b/templates/oam/workloads/1.6.6/instance.istio_definition.json deleted file mode 100644 index 1c2edcccc..000000000 --- a/templates/oam/workloads/1.6.6/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.6/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.6.6/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3d43a376 --- /dev/null +++ b/templates/oam/workloads/1.6.6/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.6/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.6/peerauthentication.istio_definition.json deleted file mode 100644 index 5a23d93ac..000000000 --- a/templates/oam/workloads/1.6.6/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f9e691e96 --- /dev/null +++ b/templates/oam/workloads/1.6.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.6/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.6/quotaspec.istio_definition.json deleted file mode 100644 index d894b1dc7..000000000 --- a/templates/oam/workloads/1.6.6/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4decca198 --- /dev/null +++ b/templates/oam/workloads/1.6.6/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.6/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.6/quotaspecbinding.istio_definition.json deleted file mode 100644 index 40bcb342f..000000000 --- a/templates/oam/workloads/1.6.6/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..68f205bdd --- /dev/null +++ b/templates/oam/workloads/1.6.6/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.6/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.6/rbacconfig.istio_definition.json deleted file mode 100644 index e6f813c88..000000000 --- a/templates/oam/workloads/1.6.6/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.6/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.6/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.6/requestauthentication.istio_definition.json deleted file mode 100644 index 393cdf5c5..000000000 --- a/templates/oam/workloads/1.6.6/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9abc9533c --- /dev/null +++ b/templates/oam/workloads/1.6.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.6/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/rule.istio_definition.json b/templates/oam/workloads/1.6.6/rule.istio_definition.json deleted file mode 100644 index faf4990f6..000000000 --- a/templates/oam/workloads/1.6.6/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.6/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.6/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ca6952234 --- /dev/null +++ b/templates/oam/workloads/1.6.6/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.6/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.6/serviceentry.istio_definition.json deleted file mode 100644 index 511b73735..000000000 --- a/templates/oam/workloads/1.6.6/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5e89d1af8 --- /dev/null +++ b/templates/oam/workloads/1.6.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.6/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.6/servicerole.istio_definition.json b/templates/oam/workloads/1.6.6/servicerole.istio_definition.json deleted file mode 100644 index eebc6cd7a..000000000 --- a/templates/oam/workloads/1.6.6/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.6/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.6/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.6/servicerolebinding.istio_definition.json deleted file mode 100644 index 4797ba141..000000000 --- a/templates/oam/workloads/1.6.6/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.6/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.6/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/sidecar.istio_definition.json b/templates/oam/workloads/1.6.6/sidecar.istio_definition.json deleted file mode 100644 index 0ecaf3203..000000000 --- a/templates/oam/workloads/1.6.6/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..af726c977 --- /dev/null +++ b/templates/oam/workloads/1.6.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.6/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.6/virtualservice.istio_definition.json deleted file mode 100644 index cf5859ff4..000000000 --- a/templates/oam/workloads/1.6.6/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0a120963a --- /dev/null +++ b/templates/oam/workloads/1.6.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.6/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.6/workloadentry.istio_definition.json deleted file mode 100644 index 42eba029a..000000000 --- a/templates/oam/workloads/1.6.6/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..821164813 --- /dev/null +++ b/templates/oam/workloads/1.6.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.7/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.7/attributemanifest.istio_definition.json deleted file mode 100644 index 1d021b15c..000000000 --- a/templates/oam/workloads/1.6.7/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..97095ca65 --- /dev/null +++ b/templates/oam/workloads/1.6.7/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.7/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.7/authorizationpolicy.istio_definition.json deleted file mode 100644 index b6da40f69..000000000 --- a/templates/oam/workloads/1.6.7/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f73800a9c --- /dev/null +++ b/templates/oam/workloads/1.6.7/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.7/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.7/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.7/clusterrbacconfig.istio_definition.json deleted file mode 100644 index ff1d5bf95..000000000 --- a/templates/oam/workloads/1.6.7/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.7/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.7/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.7/destinationrule.istio_definition.json deleted file mode 100644 index e129f6059..000000000 --- a/templates/oam/workloads/1.6.7/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9541b3a54 --- /dev/null +++ b/templates/oam/workloads/1.6.7/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.7/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.7/envoyfilter.istio_definition.json deleted file mode 100644 index 18d58f383..000000000 --- a/templates/oam/workloads/1.6.7/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1cad51be2 --- /dev/null +++ b/templates/oam/workloads/1.6.7/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.7/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/gateway.istio_definition.json b/templates/oam/workloads/1.6.7/gateway.istio_definition.json deleted file mode 100644 index e5d38435b..000000000 --- a/templates/oam/workloads/1.6.7/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cd0b07f40 --- /dev/null +++ b/templates/oam/workloads/1.6.7/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.7/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/handler.istio_definition.json b/templates/oam/workloads/1.6.7/handler.istio_definition.json deleted file mode 100644 index 69f07daca..000000000 --- a/templates/oam/workloads/1.6.7/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.7/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.6.7/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3de8e4175 --- /dev/null +++ b/templates/oam/workloads/1.6.7/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.7/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.7/httpapispec.istio_definition.json deleted file mode 100644 index 76f5f091f..000000000 --- a/templates/oam/workloads/1.6.7/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..564610346 --- /dev/null +++ b/templates/oam/workloads/1.6.7/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.7/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.7/httpapispecbinding.istio_definition.json deleted file mode 100644 index 3e94af660..000000000 --- a/templates/oam/workloads/1.6.7/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..80c2eb372 --- /dev/null +++ b/templates/oam/workloads/1.6.7/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.7/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.7/instance.istio_definition.json b/templates/oam/workloads/1.6.7/instance.istio_definition.json deleted file mode 100644 index 0fb4775ff..000000000 --- a/templates/oam/workloads/1.6.7/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.7/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.6.7/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..83ec75329 --- /dev/null +++ b/templates/oam/workloads/1.6.7/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.7/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.7/peerauthentication.istio_definition.json deleted file mode 100644 index 8691a3b7d..000000000 --- a/templates/oam/workloads/1.6.7/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e98d62a91 --- /dev/null +++ b/templates/oam/workloads/1.6.7/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.7/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.7/quotaspec.istio_definition.json deleted file mode 100644 index 3e2865491..000000000 --- a/templates/oam/workloads/1.6.7/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d8e1b3604 --- /dev/null +++ b/templates/oam/workloads/1.6.7/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.7/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.7/quotaspecbinding.istio_definition.json deleted file mode 100644 index ad69eba03..000000000 --- a/templates/oam/workloads/1.6.7/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..72163bad4 --- /dev/null +++ b/templates/oam/workloads/1.6.7/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.7/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.7/rbacconfig.istio_definition.json deleted file mode 100644 index 1728751ba..000000000 --- a/templates/oam/workloads/1.6.7/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.7/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.7/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.7/requestauthentication.istio_definition.json deleted file mode 100644 index 72a2c8f32..000000000 --- a/templates/oam/workloads/1.6.7/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..84082b934 --- /dev/null +++ b/templates/oam/workloads/1.6.7/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.7/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/rule.istio_definition.json b/templates/oam/workloads/1.6.7/rule.istio_definition.json deleted file mode 100644 index 8d70b10fc..000000000 --- a/templates/oam/workloads/1.6.7/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.7/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.7/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3e82eed33 --- /dev/null +++ b/templates/oam/workloads/1.6.7/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.7/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.7/serviceentry.istio_definition.json deleted file mode 100644 index a78f55f7f..000000000 --- a/templates/oam/workloads/1.6.7/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a221b6a7 --- /dev/null +++ b/templates/oam/workloads/1.6.7/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.7/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.7/servicerole.istio_definition.json b/templates/oam/workloads/1.6.7/servicerole.istio_definition.json deleted file mode 100644 index f7c65e7e8..000000000 --- a/templates/oam/workloads/1.6.7/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.7/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.7/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.7/servicerolebinding.istio_definition.json deleted file mode 100644 index c7033b474..000000000 --- a/templates/oam/workloads/1.6.7/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.7/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.7/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/sidecar.istio_definition.json b/templates/oam/workloads/1.6.7/sidecar.istio_definition.json deleted file mode 100644 index 7cadc4259..000000000 --- a/templates/oam/workloads/1.6.7/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3540cc894 --- /dev/null +++ b/templates/oam/workloads/1.6.7/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.7/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.7/virtualservice.istio_definition.json deleted file mode 100644 index c95939bb2..000000000 --- a/templates/oam/workloads/1.6.7/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b28443a6a --- /dev/null +++ b/templates/oam/workloads/1.6.7/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.7/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.7/workloadentry.istio_definition.json deleted file mode 100644 index 81b39f492..000000000 --- a/templates/oam/workloads/1.6.7/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bad73762f --- /dev/null +++ b/templates/oam/workloads/1.6.7/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.8/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.8/attributemanifest.istio_definition.json deleted file mode 100644 index 030003150..000000000 --- a/templates/oam/workloads/1.6.8/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b77234a8a --- /dev/null +++ b/templates/oam/workloads/1.6.8/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.8/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.8/authorizationpolicy.istio_definition.json deleted file mode 100644 index ef8551e13..000000000 --- a/templates/oam/workloads/1.6.8/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7ad38b82 --- /dev/null +++ b/templates/oam/workloads/1.6.8/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.8/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.8/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.8/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 4e35124d2..000000000 --- a/templates/oam/workloads/1.6.8/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.8/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.8/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.8/destinationrule.istio_definition.json deleted file mode 100644 index 592a049ba..000000000 --- a/templates/oam/workloads/1.6.8/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e2af5c265 --- /dev/null +++ b/templates/oam/workloads/1.6.8/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.8/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.8/envoyfilter.istio_definition.json deleted file mode 100644 index 0ad429427..000000000 --- a/templates/oam/workloads/1.6.8/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cb77740e3 --- /dev/null +++ b/templates/oam/workloads/1.6.8/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0a4167d7b..000000000 --- a/templates/oam/workloads/1.6.8/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/gateway.istio_definition.json b/templates/oam/workloads/1.6.8/gateway.istio_definition.json deleted file mode 100644 index cb6bf6bd6..000000000 --- a/templates/oam/workloads/1.6.8/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..706b0c426 --- /dev/null +++ b/templates/oam/workloads/1.6.8/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.8/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/handler.istio_definition.json b/templates/oam/workloads/1.6.8/handler.istio_definition.json deleted file mode 100644 index e726c1f78..000000000 --- a/templates/oam/workloads/1.6.8/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.8/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.6.8/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c06c90e18 --- /dev/null +++ b/templates/oam/workloads/1.6.8/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.8/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.8/httpapispec.istio_definition.json deleted file mode 100644 index 2dc0d96a3..000000000 --- a/templates/oam/workloads/1.6.8/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6e28ce0c9 --- /dev/null +++ b/templates/oam/workloads/1.6.8/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.8/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.8/httpapispecbinding.istio_definition.json deleted file mode 100644 index c6fa0a850..000000000 --- a/templates/oam/workloads/1.6.8/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e280f744e --- /dev/null +++ b/templates/oam/workloads/1.6.8/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.8/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.8/instance.istio_definition.json b/templates/oam/workloads/1.6.8/instance.istio_definition.json deleted file mode 100644 index 24b8efec0..000000000 --- a/templates/oam/workloads/1.6.8/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.8/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.6.8/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cbfdc486a --- /dev/null +++ b/templates/oam/workloads/1.6.8/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.8/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.8/peerauthentication.istio_definition.json deleted file mode 100644 index 9e5aeb718..000000000 --- a/templates/oam/workloads/1.6.8/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5dd0dfb44 --- /dev/null +++ b/templates/oam/workloads/1.6.8/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.8/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.8/quotaspec.istio_definition.json deleted file mode 100644 index aa566c51a..000000000 --- a/templates/oam/workloads/1.6.8/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f38891d3b --- /dev/null +++ b/templates/oam/workloads/1.6.8/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.8/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.8/quotaspecbinding.istio_definition.json deleted file mode 100644 index a677d7162..000000000 --- a/templates/oam/workloads/1.6.8/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1ab2eba1e --- /dev/null +++ b/templates/oam/workloads/1.6.8/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.8/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.8/rbacconfig.istio_definition.json deleted file mode 100644 index d56933f6c..000000000 --- a/templates/oam/workloads/1.6.8/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.8/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.8/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.8/requestauthentication.istio_definition.json deleted file mode 100644 index 9a62bd158..000000000 --- a/templates/oam/workloads/1.6.8/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e80e14f4c --- /dev/null +++ b/templates/oam/workloads/1.6.8/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.8/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/rule.istio_definition.json b/templates/oam/workloads/1.6.8/rule.istio_definition.json deleted file mode 100644 index 640017bc8..000000000 --- a/templates/oam/workloads/1.6.8/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.8/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.8/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3a729d2b8 --- /dev/null +++ b/templates/oam/workloads/1.6.8/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.8/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.8/serviceentry.istio_definition.json deleted file mode 100644 index 2a170a75e..000000000 --- a/templates/oam/workloads/1.6.8/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..12e6c7644 --- /dev/null +++ b/templates/oam/workloads/1.6.8/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.8/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.8/servicerole.istio_definition.json b/templates/oam/workloads/1.6.8/servicerole.istio_definition.json deleted file mode 100644 index f4ac08b70..000000000 --- a/templates/oam/workloads/1.6.8/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.8/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.8/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.8/servicerolebinding.istio_definition.json deleted file mode 100644 index c470ade81..000000000 --- a/templates/oam/workloads/1.6.8/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.8/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.8/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/sidecar.istio_definition.json b/templates/oam/workloads/1.6.8/sidecar.istio_definition.json deleted file mode 100644 index 00e9c777a..000000000 --- a/templates/oam/workloads/1.6.8/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..53f322784 --- /dev/null +++ b/templates/oam/workloads/1.6.8/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.8/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.8/virtualservice.istio_definition.json deleted file mode 100644 index cc2a4e16f..000000000 --- a/templates/oam/workloads/1.6.8/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d984221e4 --- /dev/null +++ b/templates/oam/workloads/1.6.8/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.8/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.8/workloadentry.istio_definition.json deleted file mode 100644 index 7db13be58..000000000 --- a/templates/oam/workloads/1.6.8/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3225e0354 --- /dev/null +++ b/templates/oam/workloads/1.6.8/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.6.9/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/attributemanifest.istio_definition.json b/templates/oam/workloads/1.6.9/attributemanifest.istio_definition.json deleted file mode 100644 index 965dad40f..000000000 --- a/templates/oam/workloads/1.6.9/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a4f85452c --- /dev/null +++ b/templates/oam/workloads/1.6.9/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.6.9/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.6.9/authorizationpolicy.istio_definition.json deleted file mode 100644 index 9b6b449d2..000000000 --- a/templates/oam/workloads/1.6.9/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e277e528 --- /dev/null +++ b/templates/oam/workloads/1.6.9/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/clusterrbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/clusterrbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4aa0238c7..000000000 --- a/templates/oam/workloads/1.6.9/clusterrbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.9/clusterrbacconfig.istio_definition.json b/templates/oam/workloads/1.6.9/clusterrbacconfig.istio_definition.json deleted file mode 100644 index 4bf5eec0a..000000000 --- a/templates/oam/workloads/1.6.9/clusterrbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ClusterRbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "clusterrbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ClusterRbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.9/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 66a1c1177..000000000 --- a/templates/oam/workloads/1.6.9/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1689 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": "boolean" - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": "integer" - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/destinationrule.istio_definition.json b/templates/oam/workloads/1.6.9/destinationrule.istio_definition.json deleted file mode 100644 index d423c9b0b..000000000 --- a/templates/oam/workloads/1.6.9/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f0dffaedc --- /dev/null +++ b/templates/oam/workloads/1.6.9/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 0b1246371..000000000 --- a/templates/oam/workloads/1.6.9/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/envoyfilter.istio_definition.json b/templates/oam/workloads/1.6.9/envoyfilter.istio_definition.json deleted file mode 100644 index c09d6e233..000000000 --- a/templates/oam/workloads/1.6.9/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1932e5780 --- /dev/null +++ b/templates/oam/workloads/1.6.9/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 586e06504..000000000 --- a/templates/oam/workloads/1.6.9/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.9/gateway.istio_definition.json b/templates/oam/workloads/1.6.9/gateway.istio_definition.json deleted file mode 100644 index c4e254dab..000000000 --- a/templates/oam/workloads/1.6.9/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f31b8f4ed --- /dev/null +++ b/templates/oam/workloads/1.6.9/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 47e742884..000000000 --- a/templates/oam/workloads/1.6.9/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,298 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/handler.istio_definition.json b/templates/oam/workloads/1.6.9/handler.istio_definition.json deleted file mode 100644 index 230a3da5e..000000000 --- a/templates/oam/workloads/1.6.9/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.6.9/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.6.9/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f57386ef3 --- /dev/null +++ b/templates/oam/workloads/1.6.9/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.6.9/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispec.istio_definition.json b/templates/oam/workloads/1.6.9/httpapispec.istio_definition.json deleted file mode 100644 index 60d3625e4..000000000 --- a/templates/oam/workloads/1.6.9/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8b4001dd8 --- /dev/null +++ b/templates/oam/workloads/1.6.9/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.6.9/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.6.9/httpapispecbinding.istio_definition.json deleted file mode 100644 index 6b94db735..000000000 --- a/templates/oam/workloads/1.6.9/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e69396acc --- /dev/null +++ b/templates/oam/workloads/1.6.9/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index dce41fb55..000000000 --- a/templates/oam/workloads/1.6.9/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object" - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.9/instance.istio_definition.json b/templates/oam/workloads/1.6.9/instance.istio_definition.json deleted file mode 100644 index e44aa3a88..000000000 --- a/templates/oam/workloads/1.6.9/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.6.9/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.6.9/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6bcd58c24 --- /dev/null +++ b/templates/oam/workloads/1.6.9/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.6.9/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/peerauthentication.istio_definition.json b/templates/oam/workloads/1.6.9/peerauthentication.istio_definition.json deleted file mode 100644 index 780646677..000000000 --- a/templates/oam/workloads/1.6.9/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9dfa332dc --- /dev/null +++ b/templates/oam/workloads/1.6.9/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.6.9/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspec.istio_definition.json b/templates/oam/workloads/1.6.9/quotaspec.istio_definition.json deleted file mode 100644 index 16528a96e..000000000 --- a/templates/oam/workloads/1.6.9/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c12a9a3c0 --- /dev/null +++ b/templates/oam/workloads/1.6.9/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.6.9/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.6.9/quotaspecbinding.istio_definition.json deleted file mode 100644 index 38a2ec254..000000000 --- a/templates/oam/workloads/1.6.9/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..470153850 --- /dev/null +++ b/templates/oam/workloads/1.6.9/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/rbacconfig.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/rbacconfig.istio.meshery.layer5io.schema.json deleted file mode 100644 index ebf98085e..000000000 --- a/templates/oam/workloads/1.6.9/rbacconfig.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "enforcementMode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "exclusion": { - "description": "A list of services or namespaces that should not be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "inclusion": { - "description": "A list of services or namespaces that should be enforced by Istio RBAC policies.", - "properties": { - "namespaces": { - "description": "A list of namespaces.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "services": { - "description": "A list of services.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "mode": { - "description": "Istio RBAC mode.", - "enum": [ - "OFF", - "ON", - "ON_WITH_INCLUSION", - "ON_WITH_EXCLUSION" - ], - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/rbacconfig.istio_definition.json b/templates/oam/workloads/1.6.9/rbacconfig.istio_definition.json deleted file mode 100644 index f11c791dd..000000000 --- a/templates/oam/workloads/1.6.9/rbacconfig.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RbacConfig.Istio" - }, - "spec": { - "definitionRef": { - "name": "rbacconfig.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "RbacConfig" - } - } -} diff --git a/templates/oam/workloads/1.6.9/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.6.9/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/requestauthentication.istio_definition.json b/templates/oam/workloads/1.6.9/requestauthentication.istio_definition.json deleted file mode 100644 index d6a5e811b..000000000 --- a/templates/oam/workloads/1.6.9/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..07f493f7a --- /dev/null +++ b/templates/oam/workloads/1.6.9/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.6.9/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/rule.istio_definition.json b/templates/oam/workloads/1.6.9/rule.istio_definition.json deleted file mode 100644 index f70ff900f..000000000 --- a/templates/oam/workloads/1.6.9/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.6.9/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.6.9/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..010b18091 --- /dev/null +++ b/templates/oam/workloads/1.6.9/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 69430e9f1..000000000 --- a/templates/oam/workloads/1.6.9/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/serviceentry.istio_definition.json b/templates/oam/workloads/1.6.9/serviceentry.istio_definition.json deleted file mode 100644 index 1e785e278..000000000 --- a/templates/oam/workloads/1.6.9/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9175aa171 --- /dev/null +++ b/templates/oam/workloads/1.6.9/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/servicerole.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/servicerole.istio.meshery.layer5io.schema.json deleted file mode 100644 index dfa14bacb..000000000 --- a/templates/oam/workloads/1.6.9/servicerole.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "rules": { - "description": "The set of access rules (permissions) that the role has.", - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.6.9/servicerole.istio_definition.json b/templates/oam/workloads/1.6.9/servicerole.istio_definition.json deleted file mode 100644 index 9cefe5eeb..000000000 --- a/templates/oam/workloads/1.6.9/servicerole.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRole.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerole.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRole" - } - } -} diff --git a/templates/oam/workloads/1.6.9/servicerolebinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/servicerolebinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3b9cacfdb..000000000 --- a/templates/oam/workloads/1.6.9/servicerolebinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "description": "See more details at:", - "properties": { - "actions": { - "items": { - "properties": { - "constraints": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "Key of the constraint.", - "format": "string", - "type": "string" - }, - "values": { - "description": "List of valid values for the constraint.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "items": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "type": "array" - }, - "services": { - "description": "A list of service names.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "mode": { - "enum": [ - "ENFORCED", - "PERMISSIVE" - ], - "type": "string" - }, - "role": { - "format": "string", - "type": "string" - }, - "roleRef": { - "description": "Reference to the ServiceRole object.", - "properties": { - "kind": { - "description": "The type of the role being referenced.", - "format": "string", - "type": "string" - }, - "name": { - "description": "The name of the ServiceRole object being referenced.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "subjects": { - "description": "List of subjects that are assigned the ServiceRole object.", - "items": { - "properties": { - "group": { - "format": "string", - "type": "string" - }, - "groups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ips": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "names": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notGroups": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIps": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "properties": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional.", - "type": "object" - }, - "user": { - "description": "Optional.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/servicerolebinding.istio_definition.json b/templates/oam/workloads/1.6.9/servicerolebinding.istio_definition.json deleted file mode 100644 index 1670b3475..000000000 --- a/templates/oam/workloads/1.6.9/servicerolebinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceRoleBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "servicerolebinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "rbac.istio.io/v1alpha1", - "k8sKind": "ServiceRoleBinding" - } - } -} diff --git a/templates/oam/workloads/1.6.9/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index f8f745289..000000000 --- a/templates/oam/workloads/1.6.9/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "localhostServerTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "localhostClientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "localhost": { - "properties": { - "clientTls": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "serverTls": { - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/sidecar.istio_definition.json b/templates/oam/workloads/1.6.9/sidecar.istio_definition.json deleted file mode 100644 index c7ea4811f..000000000 --- a/templates/oam/workloads/1.6.9/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a32e4d7e9 --- /dev/null +++ b/templates/oam/workloads/1.6.9/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a24b9593..000000000 --- a/templates/oam/workloads/1.6.9/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1188 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": "boolean" - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": "integer" - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": "boolean" - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/virtualservice.istio_definition.json b/templates/oam/workloads/1.6.9/virtualservice.istio_definition.json deleted file mode 100644 index 939fa2c1e..000000000 --- a/templates/oam/workloads/1.6.9/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..537249f5c --- /dev/null +++ b/templates/oam/workloads/1.6.9/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.6.9/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/workloadentry.istio_definition.json b/templates/oam/workloads/1.6.9/workloadentry.istio_definition.json deleted file mode 100644 index af8eaec01..000000000 --- a/templates/oam/workloads/1.6.9/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.6.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fcc1778ff --- /dev/null +++ b/templates/oam/workloads/1.6.9/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.6.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..16bc481a2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8c7b6bdf2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98b64dccb --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..43597516b --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e11a8d76 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4c9a98a7b --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5422b7908 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..68603c568 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2f1710c50 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..75dd4f2df --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..388c37fdd --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d3acd323e --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ac78675ca --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8ed4537f0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7aae6e333 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..410e75db3 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6efba1902 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..30d389bd8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9ba0b586 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..581443e56 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1b6ad682c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..70dba61b7 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7e0e319b2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..57289f9cf --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f972aba0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e3db2ece6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..71cbcc323 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0e76572fb --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..39386da58 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..59203dfcc --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d70099b10 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2233619d9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..90f294a81 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..279bd430d --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ed34ea004 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d94afc42c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..96899abdd --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..47f1c239a --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..00255d999 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cedcf5654 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b867eaee5 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c5f6824b6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a71ca0f63 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8042a884 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5a0b5c4f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..72ed43d50 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c81b89878 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b88d481d --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0303d1bab --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6840fc57f --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c7046af6c --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de3233bb2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5f913792 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..12da8a570 --- /dev/null +++ b/templates/oam/workloads/1.7.0-alpha.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..94912771b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..253322e94 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1915725ff --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da170fab0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..840acbbbc --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dff5acae6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8f225342 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4d2b65d16 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..492f5af5c --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f8e2432b6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..958b2848a --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d2f85f174 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b59645864 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a0b9fbb2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cf6ab413f --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..23928fa6a --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e66dc22e9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..902398eaa --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a84a7b34 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..69377d86c --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,225 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bacd9a2e8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..62006b937 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e1fc76c6f --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c72b5151a --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fd6a2f7a5 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13dd31c8b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c563f118e --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..392608be0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8aafba15 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5a4905ddd --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2af7666ee --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3bbef1620 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eafce8c81 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bf028121b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1d86efa26 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..56bce89f6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c1360fb4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8ca8f49d6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-beta.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-beta.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8a7a110a4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..89043a6bb --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..73cb03f94 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..134ab0d37 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92517a722 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66ab75bc9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..97211d6c1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d44240469 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0cc63ce32 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2a819a248 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0ea1fe132 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a04873250 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..71063268f --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9d5639b7b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ff0cf9b24 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..99b73ab82 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d719274cf --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7ef7788a6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..87b63d2cd --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..21c1a3652 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..78c6b4804 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a8866eaac --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5bd781cda --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..72deabc57 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3c801b56b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..454572c01 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c0a74bce6 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8e1e53e5 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cb899d817 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ec707f3f --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c10c4acd5 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d46f01f0d --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ce6bc07ef --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..131671fff --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2b4dcabe4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28d90a791 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b697ad7fd --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..08eab0bf4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9752e16c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6a1c3f881 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d0586e9be --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..077e4c07a --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..02b18adb9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b8b6592f4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3bdeb3901 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1d8b52c8b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6888d5178 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f78284c5b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fa3a4bb0c --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a2c6cb92 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..775732ecd --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1fc602c59 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..478545f92 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3792f65e5 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..526eb9203 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a277627a0 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..109d2cf6e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..110ab4b3e --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1c08acd37 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e686f826d --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..03b65c40c --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0c4eb424f --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..efb5233cd --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a228d9d6d --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f912f7fc2 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8654348ae --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4b93b749c --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18935099c --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..34411145c --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d11960dee --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7843b51a7 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..235935c76 --- /dev/null +++ b/templates/oam/workloads/1.7.0-rc.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0-rc.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.0/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.0/attributemanifest.istio_definition.json deleted file mode 100644 index 9eb8ea836..000000000 --- a/templates/oam/workloads/1.7.0/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..112003ad9 --- /dev/null +++ b/templates/oam/workloads/1.7.0/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 417f3e37d..000000000 --- a/templates/oam/workloads/1.7.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,225 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index 86027cdc9..000000000 --- a/templates/oam/workloads/1.7.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f5086f37f --- /dev/null +++ b/templates/oam/workloads/1.7.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.0/destinationrule.istio_definition.json deleted file mode 100644 index ad07171ce..000000000 --- a/templates/oam/workloads/1.7.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13f400f8b --- /dev/null +++ b/templates/oam/workloads/1.7.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.0/envoyfilter.istio_definition.json deleted file mode 100644 index 89c1da467..000000000 --- a/templates/oam/workloads/1.7.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9129811a5 --- /dev/null +++ b/templates/oam/workloads/1.7.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.7.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/gateway.istio_definition.json b/templates/oam/workloads/1.7.0/gateway.istio_definition.json deleted file mode 100644 index 247ff30eb..000000000 --- a/templates/oam/workloads/1.7.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e518f6c30 --- /dev/null +++ b/templates/oam/workloads/1.7.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.0/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/handler.istio_definition.json b/templates/oam/workloads/1.7.0/handler.istio_definition.json deleted file mode 100644 index 99c1fb03b..000000000 --- a/templates/oam/workloads/1.7.0/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.0/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.0/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7acf688c4 --- /dev/null +++ b/templates/oam/workloads/1.7.0/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.0/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.0/httpapispec.istio_definition.json deleted file mode 100644 index 0d87dad0e..000000000 --- a/templates/oam/workloads/1.7.0/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..053f3545e --- /dev/null +++ b/templates/oam/workloads/1.7.0/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.0/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.0/httpapispecbinding.istio_definition.json deleted file mode 100644 index d38e4e480..000000000 --- a/templates/oam/workloads/1.7.0/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fa35ae9b1 --- /dev/null +++ b/templates/oam/workloads/1.7.0/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.0/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.0/instance.istio_definition.json b/templates/oam/workloads/1.7.0/instance.istio_definition.json deleted file mode 100644 index 5d02f5e95..000000000 --- a/templates/oam/workloads/1.7.0/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.0/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.0/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d651cc7e1 --- /dev/null +++ b/templates/oam/workloads/1.7.0/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.0/peerauthentication.istio_definition.json deleted file mode 100644 index 71bb71e81..000000000 --- a/templates/oam/workloads/1.7.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..29cbdb180 --- /dev/null +++ b/templates/oam/workloads/1.7.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.0/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.0/quotaspec.istio_definition.json deleted file mode 100644 index 73bf330fb..000000000 --- a/templates/oam/workloads/1.7.0/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..30c07cab6 --- /dev/null +++ b/templates/oam/workloads/1.7.0/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.0/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.0/quotaspecbinding.istio_definition.json deleted file mode 100644 index 554ccfb27..000000000 --- a/templates/oam/workloads/1.7.0/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6dce4801c --- /dev/null +++ b/templates/oam/workloads/1.7.0/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.0/requestauthentication.istio_definition.json deleted file mode 100644 index e03c2da8b..000000000 --- a/templates/oam/workloads/1.7.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..060a537b4 --- /dev/null +++ b/templates/oam/workloads/1.7.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.0/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/rule.istio_definition.json b/templates/oam/workloads/1.7.0/rule.istio_definition.json deleted file mode 100644 index 0acd20d71..000000000 --- a/templates/oam/workloads/1.7.0/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.0/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.0/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a08415ce --- /dev/null +++ b/templates/oam/workloads/1.7.0/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.0/serviceentry.istio_definition.json deleted file mode 100644 index 45f71ef6c..000000000 --- a/templates/oam/workloads/1.7.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..90249e5d0 --- /dev/null +++ b/templates/oam/workloads/1.7.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/sidecar.istio_definition.json b/templates/oam/workloads/1.7.0/sidecar.istio_definition.json deleted file mode 100644 index 5ff21930b..000000000 --- a/templates/oam/workloads/1.7.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0e759c1fa --- /dev/null +++ b/templates/oam/workloads/1.7.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7ba219a9b..000000000 --- a/templates/oam/workloads/1.7.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.0/virtualservice.istio_definition.json deleted file mode 100644 index dc2ae4999..000000000 --- a/templates/oam/workloads/1.7.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..04fc47ed9 --- /dev/null +++ b/templates/oam/workloads/1.7.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.0/workloadentry.istio_definition.json deleted file mode 100644 index ad4c72885..000000000 --- a/templates/oam/workloads/1.7.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..669e03a60 --- /dev/null +++ b/templates/oam/workloads/1.7.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.1/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.1/attributemanifest.istio_definition.json deleted file mode 100644 index f219ddf2a..000000000 --- a/templates/oam/workloads/1.7.1/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e5f963516 --- /dev/null +++ b/templates/oam/workloads/1.7.1/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index a495503bc..000000000 --- a/templates/oam/workloads/1.7.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5120ffaa4 --- /dev/null +++ b/templates/oam/workloads/1.7.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.1/destinationrule.istio_definition.json deleted file mode 100644 index d831c251c..000000000 --- a/templates/oam/workloads/1.7.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d8d164e85 --- /dev/null +++ b/templates/oam/workloads/1.7.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.1/envoyfilter.istio_definition.json deleted file mode 100644 index cd098e128..000000000 --- a/templates/oam/workloads/1.7.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..61649ea32 --- /dev/null +++ b/templates/oam/workloads/1.7.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.7.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/gateway.istio_definition.json b/templates/oam/workloads/1.7.1/gateway.istio_definition.json deleted file mode 100644 index 101cd7c1a..000000000 --- a/templates/oam/workloads/1.7.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c538acf31 --- /dev/null +++ b/templates/oam/workloads/1.7.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.1/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/handler.istio_definition.json b/templates/oam/workloads/1.7.1/handler.istio_definition.json deleted file mode 100644 index b6efc4616..000000000 --- a/templates/oam/workloads/1.7.1/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.1/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.1/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8a9e9e898 --- /dev/null +++ b/templates/oam/workloads/1.7.1/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.1/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.1/httpapispec.istio_definition.json deleted file mode 100644 index b50160a12..000000000 --- a/templates/oam/workloads/1.7.1/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ca6d8d7a6 --- /dev/null +++ b/templates/oam/workloads/1.7.1/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.1/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.1/httpapispecbinding.istio_definition.json deleted file mode 100644 index 30f02b29e..000000000 --- a/templates/oam/workloads/1.7.1/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..01a13cbde --- /dev/null +++ b/templates/oam/workloads/1.7.1/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.1/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.1/instance.istio_definition.json b/templates/oam/workloads/1.7.1/instance.istio_definition.json deleted file mode 100644 index 702c1f5d1..000000000 --- a/templates/oam/workloads/1.7.1/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.1/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.1/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..83ddd64e6 --- /dev/null +++ b/templates/oam/workloads/1.7.1/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.1/peerauthentication.istio_definition.json deleted file mode 100644 index 3fdc4bcfd..000000000 --- a/templates/oam/workloads/1.7.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3e03d858b --- /dev/null +++ b/templates/oam/workloads/1.7.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.1/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.1/quotaspec.istio_definition.json deleted file mode 100644 index 676767a61..000000000 --- a/templates/oam/workloads/1.7.1/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..961c93e3a --- /dev/null +++ b/templates/oam/workloads/1.7.1/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.1/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.1/quotaspecbinding.istio_definition.json deleted file mode 100644 index 79571d889..000000000 --- a/templates/oam/workloads/1.7.1/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..42d1095c5 --- /dev/null +++ b/templates/oam/workloads/1.7.1/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.1/requestauthentication.istio_definition.json deleted file mode 100644 index ee06842b0..000000000 --- a/templates/oam/workloads/1.7.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..56463d4a5 --- /dev/null +++ b/templates/oam/workloads/1.7.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.1/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/rule.istio_definition.json b/templates/oam/workloads/1.7.1/rule.istio_definition.json deleted file mode 100644 index 7b65fbc80..000000000 --- a/templates/oam/workloads/1.7.1/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.1/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.1/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dc1d4c49c --- /dev/null +++ b/templates/oam/workloads/1.7.1/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.1/serviceentry.istio_definition.json deleted file mode 100644 index 137f04050..000000000 --- a/templates/oam/workloads/1.7.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ce488215b --- /dev/null +++ b/templates/oam/workloads/1.7.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/sidecar.istio_definition.json b/templates/oam/workloads/1.7.1/sidecar.istio_definition.json deleted file mode 100644 index 5ffac448d..000000000 --- a/templates/oam/workloads/1.7.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..88aab76b6 --- /dev/null +++ b/templates/oam/workloads/1.7.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5d805f487..000000000 --- a/templates/oam/workloads/1.7.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.1/virtualservice.istio_definition.json deleted file mode 100644 index 4dfdf2a7d..000000000 --- a/templates/oam/workloads/1.7.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..396a4ada0 --- /dev/null +++ b/templates/oam/workloads/1.7.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.1/workloadentry.istio_definition.json deleted file mode 100644 index da19215ff..000000000 --- a/templates/oam/workloads/1.7.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5e6a08ebf --- /dev/null +++ b/templates/oam/workloads/1.7.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.2/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.2/attributemanifest.istio_definition.json deleted file mode 100644 index 60613afce..000000000 --- a/templates/oam/workloads/1.7.2/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc92459f2 --- /dev/null +++ b/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,49 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "attributes": { + "additionalProperties": { + "properties": { + "description": { + "description": "A human-readable description of the attribute's purpose.", + "format": "string", + "type": "string" + }, + "valueType": { + "description": "The type of data carried by this attribute.", + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "STRING", + "INT64", + "DOUBLE", + "BOOL", + "TIMESTAMP", + "IP_ADDRESS", + "EMAIL_ADDRESS", + "URI", + "DNS_NAME", + "DURATION", + "STRING_MAP" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "The set of attributes this Istio component will be responsible for producing at runtime.", + "type": "object" + }, + "name": { + "description": "Name of the component producing these attributes.", + "format": "string", + "type": "string" + }, + "revision": { + "description": "The revision of this document.", + "format": "string", + "type": "string" + } + }, + "title": "attributemanifest", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6634cc60f --- /dev/null +++ b/templates/oam/workloads/1.7.2/attributemanifest.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "attributemanifest", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "attributemanifest.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "attributemanifest", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index 3426b031e..000000000 --- a/templates/oam/workloads/1.7.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..6e8719ad0 --- /dev/null +++ b/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,226 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT" + ], + "type": "string" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ae1b7212 --- /dev/null +++ b/templates/oam/workloads/1.7.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.2/destinationrule.istio_definition.json deleted file mode 100644 index 745d2a6d7..000000000 --- a/templates/oam/workloads/1.7.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..bc3564b9e --- /dev/null +++ b/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1653 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..529e64fdf --- /dev/null +++ b/templates/oam/workloads/1.7.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.2/envoyfilter.istio_definition.json deleted file mode 100644 index acb9abcbd..000000000 --- a/templates/oam/workloads/1.7.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..537f63215 --- /dev/null +++ b/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,279 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to SIDECAR_INBOUND context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..40cde31bd --- /dev/null +++ b/templates/oam/workloads/1.7.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.7.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.2/gateway.istio_definition.json b/templates/oam/workloads/1.7.2/gateway.istio_definition.json deleted file mode 100644 index b8f7fc8e6..000000000 --- a/templates/oam/workloads/1.7.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7960253a9 --- /dev/null +++ b/templates/oam/workloads/1.7.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.2/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/handler.istio_definition.json b/templates/oam/workloads/1.7.2/handler.istio_definition.json deleted file mode 100644 index b3271ac0b..000000000 --- a/templates/oam/workloads/1.7.2/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.2/handler.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/handler.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a12dce213 --- /dev/null +++ b/templates/oam/workloads/1.7.2/handler.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,299 @@ +{ + "description": "Handler allows the operator to configure a specific adapter implementation.", + "properties": { + "adapter": { + "description": "The name of a specific adapter implementation.", + "format": "string", + "type": "string" + }, + "compiledAdapter": { + "description": "The name of the compiled in adapter this handler instantiates.", + "format": "string", + "type": "string" + }, + "connection": { + "description": "Information on how to connect to the out-of-process adapter.", + "properties": { + "address": { + "description": "The address of the backend.", + "format": "string", + "type": "string" + }, + "authentication": { + "description": "Auth config for the connection to the backend.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ] + } + }, + { + "properties": { + "tls": { + "allOf": [ + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + } + }, + { + "required": [ + "tokenPath" + ] + }, + { + "required": [ + "oauth" + ] + } + ] + }, + { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + }, + { + "required": [ + "authHeader" + ] + }, + { + "required": [ + "customHeader" + ] + } + ] + } + ] + } + }, + "required": [ + "tls" + ] + }, + { + "required": [ + "mutual" + ] + } + ], + "properties": { + "mutual": { + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "The path to the file holding client certificate for mutual TLS.", + "format": "string", + "type": "string" + }, + "privateKey": { + "description": "The path to the file holding the private key for mutual TLS.", + "format": "string", + "type": "string" + }, + "serverName": { + "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "authHeader": { + "description": "Access token is passed as authorization header.", + "enum": [ + "PLAIN", + "BEARER" + ], + "type": "string" + }, + "caCertificates": { + "format": "string", + "type": "string" + }, + "customHeader": { + "description": "Customized header key to hold access token, e.g.", + "format": "string", + "type": "string" + }, + "oauth": { + "description": "Oauth config to fetch access token from auth provider.", + "properties": { + "clientId": { + "description": "OAuth client id for mixer.", + "format": "string", + "type": "string" + }, + "clientSecret": { + "description": "The path to the file holding the client secret for oauth.", + "format": "string", + "type": "string" + }, + "endpointParams": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Additional parameters for requests to the token endpoint.", + "type": "object" + }, + "scopes": { + "description": "List of requested permissions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "tokenUrl": { + "description": "The Resource server's token endpoint URL.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "serverName": { + "format": "string", + "type": "string" + }, + "tokenPath": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "timeout": { + "description": "Timeout for remote calls to the backend.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Must be unique in the entire Mixer configuration.", + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on adapter implementation.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "title": "handler", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/handler.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/handler.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6a31c4013 --- /dev/null +++ b/templates/oam/workloads/1.7.2/handler.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "handler", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "handler.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "handler", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.2/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.2/httpapispec.istio_definition.json deleted file mode 100644 index 18d269084..000000000 --- a/templates/oam/workloads/1.7.2/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9253c7dc1 --- /dev/null +++ b/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,457 @@ +{ + "properties": { + "apiKeys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_keys": { + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ] + } + }, + { + "required": [ + "query" + ] + }, + { + "required": [ + "header" + ] + }, + { + "required": [ + "cookie" + ] + } + ], + "properties": { + "cookie": { + "format": "string", + "type": "string" + }, + "header": { + "description": "API key is sent in a request header.", + "format": "string", + "type": "string" + }, + "query": { + "description": "API Key is sent as a query parameter.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "patterns": { + "description": "List of HTTP patterns to match.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "uriTemplate" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "attributes": { + "properties": { + "attributes": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ] + } + }, + { + "required": [ + "stringValue" + ] + }, + { + "required": [ + "int64Value" + ] + }, + { + "required": [ + "doubleValue" + ] + }, + { + "required": [ + "boolValue" + ] + }, + { + "required": [ + "bytesValue" + ] + }, + { + "required": [ + "timestampValue" + ] + }, + { + "required": [ + "durationValue" + ] + }, + { + "required": [ + "stringMapValue" + ] + } + ], + "properties": { + "boolValue": { + "type": "boolean" + }, + "bytesValue": { + "format": "binary", + "type": "string" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "integer" + }, + "stringMapValue": { + "properties": { + "entries": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Holds a set of name/value pairs.", + "type": "object" + } + }, + "type": "object" + }, + "stringValue": { + "format": "string", + "type": "string" + }, + "timestampValue": { + "format": "dateTime", + "type": "string" + } + }, + "type": "object" + }, + "description": "A map of attribute name to its value.", + "type": "object" + } + }, + "type": "object" + }, + "httpMethod": { + "format": "string", + "type": "string" + }, + "regex": { + "format": "string", + "type": "string" + }, + "uriTemplate": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98fa93539 --- /dev/null +++ b/templates/oam/workloads/1.7.2/httpapispec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpec", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.2/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.2/httpapispecbinding.istio_definition.json deleted file mode 100644 index 7fa50e912..000000000 --- a/templates/oam/workloads/1.7.2/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1a3fd06df --- /dev/null +++ b/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "properties": { + "apiSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "api_specs": { + "items": { + "properties": { + "name": { + "description": "The short name of the HTTPAPISpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the HTTPAPISpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed HTTPAPISpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "HTTPAPI Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b1e35b81d --- /dev/null +++ b/templates/oam/workloads/1.7.2/httpapispecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "HTTPAPISpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "httpapispecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "HTTPAPISpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.2/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.2/instance.istio_definition.json b/templates/oam/workloads/1.7.2/instance.istio_definition.json deleted file mode 100644 index d7cd4474f..000000000 --- a/templates/oam/workloads/1.7.2/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.2/instance.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/instance.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b7cfa292a --- /dev/null +++ b/templates/oam/workloads/1.7.2/instance.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,33 @@ +{ + "description": "An Instance tells Mixer how to create instances for particular template.", + "properties": { + "attributeBindings": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "compiledTemplate": { + "description": "The name of the compiled in template this instance creates instances for.", + "format": "string", + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + }, + "params": { + "description": "Depends on referenced template.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "template": { + "description": "The name of the template this instance creates instances for.", + "format": "string", + "type": "string" + } + }, + "title": "instance", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/instance.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/instance.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c3cd97a0b --- /dev/null +++ b/templates/oam/workloads/1.7.2/instance.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "instance", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "instance.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "instance", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.2/peerauthentication.istio_definition.json deleted file mode 100644 index 7056de6d5..000000000 --- a/templates/oam/workloads/1.7.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..135605f1a --- /dev/null +++ b/templates/oam/workloads/1.7.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.2/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.2/quotaspec.istio_definition.json deleted file mode 100644 index e98a83e75..000000000 --- a/templates/oam/workloads/1.7.2/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1baf91751 --- /dev/null +++ b/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,102 @@ +{ + "description": "Determines the quotas used for individual requests.", + "properties": { + "rules": { + "description": "A list of Quota rules.", + "items": { + "properties": { + "match": { + "description": "If empty, match all request.", + "items": { + "properties": { + "clause": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Map of attribute names to StringMatch type.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "quotas": { + "description": "The list of quotas to charge.", + "items": { + "properties": { + "charge": { + "format": "int32", + "type": "integer" + }, + "quota": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1ac590379 --- /dev/null +++ b/templates/oam/workloads/1.7.2/quotaspec.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpec", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspec.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpec", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.2/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.2/quotaspecbinding.istio_definition.json deleted file mode 100644 index a99d7fb5f..000000000 --- a/templates/oam/workloads/1.7.2/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..406893600 --- /dev/null +++ b/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,61 @@ +{ + "properties": { + "quotaSpecs": { + "items": { + "properties": { + "name": { + "description": "The short name of the QuotaSpec.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the QuotaSpec.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "services": { + "description": "One or more services to map the listed QuotaSpec onto.", + "items": { + "properties": { + "domain": { + "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "Optional one or more labels that uniquely identify the service version.", + "type": "object" + }, + "name": { + "description": "The short name of the service such as \"foo\".", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Optional namespace of the service.", + "format": "string", + "type": "string" + }, + "service": { + "description": "The service FQDN.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Quota Spec Binding", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b2feb4d6e --- /dev/null +++ b/templates/oam/workloads/1.7.2/quotaspecbinding.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "QuotaSpecBinding", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "quotaspecbinding.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "QuotaSpecBinding", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.2/requestauthentication.istio_definition.json deleted file mode 100644 index b3926628a..000000000 --- a/templates/oam/workloads/1.7.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2f683e35e --- /dev/null +++ b/templates/oam/workloads/1.7.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.2/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/rule.istio_definition.json b/templates/oam/workloads/1.7.2/rule.istio_definition.json deleted file mode 100644 index c46b5f4d7..000000000 --- a/templates/oam/workloads/1.7.2/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.2/rule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/rule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fd9b3bdc4 --- /dev/null +++ b/templates/oam/workloads/1.7.2/rule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", + "properties": { + "actions": { + "description": "The actions that will be executed when match evaluates to `true`.", + "items": { + "properties": { + "handler": { + "description": "Fully qualified name of the handler to invoke.", + "format": "string", + "type": "string" + }, + "instances": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A handle to refer to the results of the action.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "match": { + "description": "Match is an attribute based predicate.", + "format": "string", + "type": "string" + }, + "requestHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "responseHeaderOperations": { + "items": { + "properties": { + "name": { + "description": "Header name literal value.", + "format": "string", + "type": "string" + }, + "operation": { + "description": "Header operation type.", + "enum": [ + "REPLACE", + "REMOVE", + "APPEND" + ], + "type": "string" + }, + "values": { + "description": "Header value expressions.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampling": { + "properties": { + "random": { + "description": "Provides filtering of actions based on random selection per request.", + "properties": { + "attributeExpression": { + "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", + "format": "string", + "type": "string" + }, + "percentSampled": { + "description": "The default sampling rate, expressed as a percentage.", + "properties": { + "denominator": { + "description": "Specifies the denominator.", + "enum": [ + "HUNDRED", + "TEN_THOUSAND" + ], + "type": "string" + }, + "numerator": { + "description": "Specifies the numerator.", + "type": "integer" + } + }, + "type": "object" + }, + "useIndependentRandomness": { + "description": "By default sampling will be based on the value of the request header `x-request-id`.", + "type": "boolean" + } + }, + "type": "object" + }, + "rateLimit": { + "properties": { + "maxUnsampledEntries": { + "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", + "format": "int64", + "type": "integer" + }, + "samplingDuration": { + "description": "Window in which to enforce the sampling rate.", + "type": "string" + }, + "samplingRate": { + "description": "The rate at which to sample entries once the unsampled limit has been reached.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/rule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/rule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..25881bd14 --- /dev/null +++ b/templates/oam/workloads/1.7.2/rule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "rule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "rule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "config.istio.io/v1alpha2", + "k8sKind": "rule", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.2/serviceentry.istio_definition.json deleted file mode 100644 index 62c5a7ea7..000000000 --- a/templates/oam/workloads/1.7.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..224d215ba --- /dev/null +++ b/templates/oam/workloads/1.7.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/sidecar.istio_definition.json b/templates/oam/workloads/1.7.2/sidecar.istio_definition.json deleted file mode 100644 index 25dfb449b..000000000 --- a/templates/oam/workloads/1.7.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3240f8eb4 --- /dev/null +++ b/templates/oam/workloads/1.7.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5d805f487..000000000 --- a/templates/oam/workloads/1.7.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.2/virtualservice.istio_definition.json deleted file mode 100644 index bc2b9e96f..000000000 --- a/templates/oam/workloads/1.7.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..5f3acb85b --- /dev/null +++ b/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..061b8d7ea --- /dev/null +++ b/templates/oam/workloads/1.7.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.2/workloadentry.istio_definition.json deleted file mode 100644 index d27c82f55..000000000 --- a/templates/oam/workloads/1.7.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0a41339f3 --- /dev/null +++ b/templates/oam/workloads/1.7.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.3/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.3/attributemanifest.istio_definition.json deleted file mode 100644 index 53390c523..000000000 --- a/templates/oam/workloads/1.7.3/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index 0b0c59e09..000000000 --- a/templates/oam/workloads/1.7.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..185c0bb9f --- /dev/null +++ b/templates/oam/workloads/1.7.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.3/destinationrule.istio_definition.json deleted file mode 100644 index fe0d41d47..000000000 --- a/templates/oam/workloads/1.7.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4997bf2d3 --- /dev/null +++ b/templates/oam/workloads/1.7.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.3/envoyfilter.istio_definition.json deleted file mode 100644 index 0e0391ac0..000000000 --- a/templates/oam/workloads/1.7.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7f174994 --- /dev/null +++ b/templates/oam/workloads/1.7.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.7.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.3/gateway.istio_definition.json b/templates/oam/workloads/1.7.3/gateway.istio_definition.json deleted file mode 100644 index 4d30469b8..000000000 --- a/templates/oam/workloads/1.7.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18be9613d --- /dev/null +++ b/templates/oam/workloads/1.7.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.3/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/handler.istio_definition.json b/templates/oam/workloads/1.7.3/handler.istio_definition.json deleted file mode 100644 index 6d74da53b..000000000 --- a/templates/oam/workloads/1.7.3/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.3/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.3/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.3/httpapispec.istio_definition.json deleted file mode 100644 index 637774039..000000000 --- a/templates/oam/workloads/1.7.3/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.3/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.3/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.3/httpapispecbinding.istio_definition.json deleted file mode 100644 index fb0f79336..000000000 --- a/templates/oam/workloads/1.7.3/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.3/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.3/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.3/instance.istio_definition.json b/templates/oam/workloads/1.7.3/instance.istio_definition.json deleted file mode 100644 index 3c5b7d8d4..000000000 --- a/templates/oam/workloads/1.7.3/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.3/peerauthentication.istio_definition.json deleted file mode 100644 index 2cc057cb0..000000000 --- a/templates/oam/workloads/1.7.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..680214c02 --- /dev/null +++ b/templates/oam/workloads/1.7.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.3/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.3/quotaspec.istio_definition.json deleted file mode 100644 index 8fcb7e773..000000000 --- a/templates/oam/workloads/1.7.3/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.3/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.3/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.3/quotaspecbinding.istio_definition.json deleted file mode 100644 index f694cdbd4..000000000 --- a/templates/oam/workloads/1.7.3/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.3/requestauthentication.istio_definition.json deleted file mode 100644 index 44d48ef0a..000000000 --- a/templates/oam/workloads/1.7.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..47022d704 --- /dev/null +++ b/templates/oam/workloads/1.7.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.3/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/rule.istio_definition.json b/templates/oam/workloads/1.7.3/rule.istio_definition.json deleted file mode 100644 index d53f5294e..000000000 --- a/templates/oam/workloads/1.7.3/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.3/serviceentry.istio_definition.json deleted file mode 100644 index 9ba7786c3..000000000 --- a/templates/oam/workloads/1.7.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e77f77d33 --- /dev/null +++ b/templates/oam/workloads/1.7.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/sidecar.istio_definition.json b/templates/oam/workloads/1.7.3/sidecar.istio_definition.json deleted file mode 100644 index 771c57544..000000000 --- a/templates/oam/workloads/1.7.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..043524cca --- /dev/null +++ b/templates/oam/workloads/1.7.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5d805f487..000000000 --- a/templates/oam/workloads/1.7.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.3/virtualservice.istio_definition.json deleted file mode 100644 index 6fb460561..000000000 --- a/templates/oam/workloads/1.7.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..42d085639 --- /dev/null +++ b/templates/oam/workloads/1.7.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.3/workloadentry.istio_definition.json deleted file mode 100644 index b56112cb9..000000000 --- a/templates/oam/workloads/1.7.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ef96c46bf --- /dev/null +++ b/templates/oam/workloads/1.7.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4088c194c --- /dev/null +++ b/templates/oam/workloads/1.7.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.4/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.4/attributemanifest.istio_definition.json deleted file mode 100644 index e7a0209e3..000000000 --- a/templates/oam/workloads/1.7.4/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index 3dd311bef..000000000 --- a/templates/oam/workloads/1.7.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7ad517254 --- /dev/null +++ b/templates/oam/workloads/1.7.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.4/destinationrule.istio_definition.json deleted file mode 100644 index 98b9b154e..000000000 --- a/templates/oam/workloads/1.7.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b360f1a2b --- /dev/null +++ b/templates/oam/workloads/1.7.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.4/envoyfilter.istio_definition.json deleted file mode 100644 index f8fb1af39..000000000 --- a/templates/oam/workloads/1.7.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5373b54b9 --- /dev/null +++ b/templates/oam/workloads/1.7.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.7.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.4/gateway.istio_definition.json b/templates/oam/workloads/1.7.4/gateway.istio_definition.json deleted file mode 100644 index 5b7ac9bb6..000000000 --- a/templates/oam/workloads/1.7.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..851cd3eb8 --- /dev/null +++ b/templates/oam/workloads/1.7.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.4/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/handler.istio_definition.json b/templates/oam/workloads/1.7.4/handler.istio_definition.json deleted file mode 100644 index 1bde4ac98..000000000 --- a/templates/oam/workloads/1.7.4/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.4/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.4/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.4/httpapispec.istio_definition.json deleted file mode 100644 index 6f4d4a743..000000000 --- a/templates/oam/workloads/1.7.4/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.4/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.4/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.4/httpapispecbinding.istio_definition.json deleted file mode 100644 index 9ede4fb61..000000000 --- a/templates/oam/workloads/1.7.4/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.4/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.4/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.4/instance.istio_definition.json b/templates/oam/workloads/1.7.4/instance.istio_definition.json deleted file mode 100644 index 964f8deac..000000000 --- a/templates/oam/workloads/1.7.4/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.4/peerauthentication.istio_definition.json deleted file mode 100644 index daef417f6..000000000 --- a/templates/oam/workloads/1.7.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b561fcd11 --- /dev/null +++ b/templates/oam/workloads/1.7.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.4/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.4/quotaspec.istio_definition.json deleted file mode 100644 index 2a87b668d..000000000 --- a/templates/oam/workloads/1.7.4/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.4/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.4/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.4/quotaspecbinding.istio_definition.json deleted file mode 100644 index 91ae2c099..000000000 --- a/templates/oam/workloads/1.7.4/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.4/requestauthentication.istio_definition.json deleted file mode 100644 index 7d30f20d5..000000000 --- a/templates/oam/workloads/1.7.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0db346bed --- /dev/null +++ b/templates/oam/workloads/1.7.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.4/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/rule.istio_definition.json b/templates/oam/workloads/1.7.4/rule.istio_definition.json deleted file mode 100644 index c77d45523..000000000 --- a/templates/oam/workloads/1.7.4/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.4/serviceentry.istio_definition.json deleted file mode 100644 index 123f9ae9b..000000000 --- a/templates/oam/workloads/1.7.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..45717cfd0 --- /dev/null +++ b/templates/oam/workloads/1.7.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/sidecar.istio_definition.json b/templates/oam/workloads/1.7.4/sidecar.istio_definition.json deleted file mode 100644 index e832581da..000000000 --- a/templates/oam/workloads/1.7.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..74ddc5ebb --- /dev/null +++ b/templates/oam/workloads/1.7.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.7.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.4/virtualservice.istio_definition.json deleted file mode 100644 index 007af3994..000000000 --- a/templates/oam/workloads/1.7.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..566e466b6 --- /dev/null +++ b/templates/oam/workloads/1.7.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.4/workloadentry.istio_definition.json deleted file mode 100644 index 484a94ef5..000000000 --- a/templates/oam/workloads/1.7.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..32ab4a88d --- /dev/null +++ b/templates/oam/workloads/1.7.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c6f5cb7b9 --- /dev/null +++ b/templates/oam/workloads/1.7.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.5/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.5/attributemanifest.istio_definition.json deleted file mode 100644 index 3024a8dcf..000000000 --- a/templates/oam/workloads/1.7.5/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.5/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.5/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.5/authorizationpolicy.istio_definition.json deleted file mode 100644 index 8a55af033..000000000 --- a/templates/oam/workloads/1.7.5/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f577364a --- /dev/null +++ b/templates/oam/workloads/1.7.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.5/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.5/destinationrule.istio_definition.json deleted file mode 100644 index 07b98307b..000000000 --- a/templates/oam/workloads/1.7.5/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8596d16f7 --- /dev/null +++ b/templates/oam/workloads/1.7.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.5/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.5/envoyfilter.istio_definition.json deleted file mode 100644 index 2cb73db12..000000000 --- a/templates/oam/workloads/1.7.5/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..822fdbb66 --- /dev/null +++ b/templates/oam/workloads/1.7.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.7.5/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/gateway.istio_definition.json b/templates/oam/workloads/1.7.5/gateway.istio_definition.json deleted file mode 100644 index 4813e162c..000000000 --- a/templates/oam/workloads/1.7.5/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3ceebb5fa --- /dev/null +++ b/templates/oam/workloads/1.7.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.5/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/handler.istio_definition.json b/templates/oam/workloads/1.7.5/handler.istio_definition.json deleted file mode 100644 index 95788ef3f..000000000 --- a/templates/oam/workloads/1.7.5/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.5/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.5/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.5/httpapispec.istio_definition.json deleted file mode 100644 index dd90b6aee..000000000 --- a/templates/oam/workloads/1.7.5/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.5/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.5/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.5/httpapispecbinding.istio_definition.json deleted file mode 100644 index 042bd4c41..000000000 --- a/templates/oam/workloads/1.7.5/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.5/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.5/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.5/instance.istio_definition.json b/templates/oam/workloads/1.7.5/instance.istio_definition.json deleted file mode 100644 index 7d5f55bb3..000000000 --- a/templates/oam/workloads/1.7.5/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.5/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.5/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.5/peerauthentication.istio_definition.json deleted file mode 100644 index 566d41ac3..000000000 --- a/templates/oam/workloads/1.7.5/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f80b2cee7 --- /dev/null +++ b/templates/oam/workloads/1.7.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.5/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.5/quotaspec.istio_definition.json deleted file mode 100644 index 43655322b..000000000 --- a/templates/oam/workloads/1.7.5/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.5/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.5/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.5/quotaspecbinding.istio_definition.json deleted file mode 100644 index a16411cfe..000000000 --- a/templates/oam/workloads/1.7.5/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.5/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.5/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.5/requestauthentication.istio_definition.json deleted file mode 100644 index f9d8f16c2..000000000 --- a/templates/oam/workloads/1.7.5/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cc11f2d4e --- /dev/null +++ b/templates/oam/workloads/1.7.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.5/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/rule.istio_definition.json b/templates/oam/workloads/1.7.5/rule.istio_definition.json deleted file mode 100644 index 79e81e849..000000000 --- a/templates/oam/workloads/1.7.5/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.5/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.5/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.5/serviceentry.istio_definition.json deleted file mode 100644 index 90b28c3a9..000000000 --- a/templates/oam/workloads/1.7.5/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d9d0835a8 --- /dev/null +++ b/templates/oam/workloads/1.7.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.5/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/sidecar.istio_definition.json b/templates/oam/workloads/1.7.5/sidecar.istio_definition.json deleted file mode 100644 index 87666e50e..000000000 --- a/templates/oam/workloads/1.7.5/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fcf6edd43 --- /dev/null +++ b/templates/oam/workloads/1.7.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.7.5/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.5/virtualservice.istio_definition.json deleted file mode 100644 index 8c4e870f3..000000000 --- a/templates/oam/workloads/1.7.5/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..46c7db691 --- /dev/null +++ b/templates/oam/workloads/1.7.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.5/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.5/workloadentry.istio_definition.json deleted file mode 100644 index 678f0c4f1..000000000 --- a/templates/oam/workloads/1.7.5/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c1c6f53e5 --- /dev/null +++ b/templates/oam/workloads/1.7.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6563210cc --- /dev/null +++ b/templates/oam/workloads/1.7.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.6/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.6/attributemanifest.istio_definition.json deleted file mode 100644 index c3c17c087..000000000 --- a/templates/oam/workloads/1.7.6/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.6/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.6/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.6/authorizationpolicy.istio_definition.json deleted file mode 100644 index fe96732a3..000000000 --- a/templates/oam/workloads/1.7.6/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ab2e6c4ae --- /dev/null +++ b/templates/oam/workloads/1.7.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.6/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.6/destinationrule.istio_definition.json deleted file mode 100644 index 082eb229e..000000000 --- a/templates/oam/workloads/1.7.6/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..facb9bbb9 --- /dev/null +++ b/templates/oam/workloads/1.7.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.6/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.6/envoyfilter.istio_definition.json deleted file mode 100644 index 12a71d0ca..000000000 --- a/templates/oam/workloads/1.7.6/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..321ba8243 --- /dev/null +++ b/templates/oam/workloads/1.7.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.7.6/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/gateway.istio_definition.json b/templates/oam/workloads/1.7.6/gateway.istio_definition.json deleted file mode 100644 index 3d55cb882..000000000 --- a/templates/oam/workloads/1.7.6/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ed1267f85 --- /dev/null +++ b/templates/oam/workloads/1.7.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.6/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/handler.istio_definition.json b/templates/oam/workloads/1.7.6/handler.istio_definition.json deleted file mode 100644 index ceae3fb8f..000000000 --- a/templates/oam/workloads/1.7.6/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.6/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.6/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.6/httpapispec.istio_definition.json deleted file mode 100644 index 8d2832afa..000000000 --- a/templates/oam/workloads/1.7.6/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.6/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.6/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.6/httpapispecbinding.istio_definition.json deleted file mode 100644 index 9c2066163..000000000 --- a/templates/oam/workloads/1.7.6/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.6/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.6/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.6/instance.istio_definition.json b/templates/oam/workloads/1.7.6/instance.istio_definition.json deleted file mode 100644 index ea20eac4f..000000000 --- a/templates/oam/workloads/1.7.6/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.6/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.6/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.6/peerauthentication.istio_definition.json deleted file mode 100644 index 89ee00b7f..000000000 --- a/templates/oam/workloads/1.7.6/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..176584692 --- /dev/null +++ b/templates/oam/workloads/1.7.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.6/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.6/quotaspec.istio_definition.json deleted file mode 100644 index 53cf69869..000000000 --- a/templates/oam/workloads/1.7.6/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.6/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.6/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.6/quotaspecbinding.istio_definition.json deleted file mode 100644 index 5a81424f0..000000000 --- a/templates/oam/workloads/1.7.6/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.6/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.6/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.6/requestauthentication.istio_definition.json deleted file mode 100644 index 076522d11..000000000 --- a/templates/oam/workloads/1.7.6/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28b4ead5a --- /dev/null +++ b/templates/oam/workloads/1.7.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.6/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/rule.istio_definition.json b/templates/oam/workloads/1.7.6/rule.istio_definition.json deleted file mode 100644 index c4146de65..000000000 --- a/templates/oam/workloads/1.7.6/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.6/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.6/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.6/serviceentry.istio_definition.json deleted file mode 100644 index 7d4d58e80..000000000 --- a/templates/oam/workloads/1.7.6/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..73bb2a4b1 --- /dev/null +++ b/templates/oam/workloads/1.7.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.6/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/sidecar.istio_definition.json b/templates/oam/workloads/1.7.6/sidecar.istio_definition.json deleted file mode 100644 index 0dd4d3605..000000000 --- a/templates/oam/workloads/1.7.6/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a7e4c890 --- /dev/null +++ b/templates/oam/workloads/1.7.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.7.6/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.6/virtualservice.istio_definition.json deleted file mode 100644 index 33ab599b7..000000000 --- a/templates/oam/workloads/1.7.6/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a76610904 --- /dev/null +++ b/templates/oam/workloads/1.7.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.6/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.6/workloadentry.istio_definition.json deleted file mode 100644 index bf15f98d4..000000000 --- a/templates/oam/workloads/1.7.6/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..82edf4457 --- /dev/null +++ b/templates/oam/workloads/1.7.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..98e43fe80 --- /dev/null +++ b/templates/oam/workloads/1.7.6/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.7/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.7/attributemanifest.istio_definition.json deleted file mode 100644 index 4acfaa84f..000000000 --- a/templates/oam/workloads/1.7.7/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.7/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.7/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.7/authorizationpolicy.istio_definition.json deleted file mode 100644 index 387a9ccc8..000000000 --- a/templates/oam/workloads/1.7.7/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..018aed22d --- /dev/null +++ b/templates/oam/workloads/1.7.7/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.7/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.7/destinationrule.istio_definition.json deleted file mode 100644 index 16fc3a2ea..000000000 --- a/templates/oam/workloads/1.7.7/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d058b7b60 --- /dev/null +++ b/templates/oam/workloads/1.7.7/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.7/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.7/envoyfilter.istio_definition.json deleted file mode 100644 index a7ec8fb7a..000000000 --- a/templates/oam/workloads/1.7.7/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77177a85b --- /dev/null +++ b/templates/oam/workloads/1.7.7/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.7.7/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.7/gateway.istio_definition.json b/templates/oam/workloads/1.7.7/gateway.istio_definition.json deleted file mode 100644 index 3569afb93..000000000 --- a/templates/oam/workloads/1.7.7/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..32ddbea5f --- /dev/null +++ b/templates/oam/workloads/1.7.7/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.7/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/handler.istio_definition.json b/templates/oam/workloads/1.7.7/handler.istio_definition.json deleted file mode 100644 index 5b9f89b60..000000000 --- a/templates/oam/workloads/1.7.7/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.7/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.7/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.7/httpapispec.istio_definition.json deleted file mode 100644 index b745cad51..000000000 --- a/templates/oam/workloads/1.7.7/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.7/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.7/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.7/httpapispecbinding.istio_definition.json deleted file mode 100644 index 25f5dfdb3..000000000 --- a/templates/oam/workloads/1.7.7/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.7/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9268230f9..000000000 --- a/templates/oam/workloads/1.7.7/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.7.7/instance.istio_definition.json b/templates/oam/workloads/1.7.7/instance.istio_definition.json deleted file mode 100644 index 33a76fa85..000000000 --- a/templates/oam/workloads/1.7.7/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.7/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.7/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.7/peerauthentication.istio_definition.json deleted file mode 100644 index 178d952b1..000000000 --- a/templates/oam/workloads/1.7.7/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..68015719f --- /dev/null +++ b/templates/oam/workloads/1.7.7/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.7/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.7/quotaspec.istio_definition.json deleted file mode 100644 index 2fb405fdd..000000000 --- a/templates/oam/workloads/1.7.7/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.7/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.7/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.7/quotaspecbinding.istio_definition.json deleted file mode 100644 index 0293700d7..000000000 --- a/templates/oam/workloads/1.7.7/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.7/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.7/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.7/requestauthentication.istio_definition.json deleted file mode 100644 index bf1e7dff7..000000000 --- a/templates/oam/workloads/1.7.7/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28428bdb2 --- /dev/null +++ b/templates/oam/workloads/1.7.7/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.7/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/rule.istio_definition.json b/templates/oam/workloads/1.7.7/rule.istio_definition.json deleted file mode 100644 index f1ac1a997..000000000 --- a/templates/oam/workloads/1.7.7/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.7/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.7/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.7/serviceentry.istio_definition.json deleted file mode 100644 index 0f70e083f..000000000 --- a/templates/oam/workloads/1.7.7/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..38b0926b0 --- /dev/null +++ b/templates/oam/workloads/1.7.7/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.7/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/sidecar.istio_definition.json b/templates/oam/workloads/1.7.7/sidecar.istio_definition.json deleted file mode 100644 index 5d2bde3fd..000000000 --- a/templates/oam/workloads/1.7.7/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0923b6539 --- /dev/null +++ b/templates/oam/workloads/1.7.7/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.7.7/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.7/virtualservice.istio_definition.json deleted file mode 100644 index 64b272abf..000000000 --- a/templates/oam/workloads/1.7.7/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a4dc30f2e --- /dev/null +++ b/templates/oam/workloads/1.7.7/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.7/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.7/workloadentry.istio_definition.json deleted file mode 100644 index c93c0123b..000000000 --- a/templates/oam/workloads/1.7.7/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4e8a386d1 --- /dev/null +++ b/templates/oam/workloads/1.7.7/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..243e53626 --- /dev/null +++ b/templates/oam/workloads/1.7.7/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/attributemanifest.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/attributemanifest.istio.meshery.layer5io.schema.json deleted file mode 100644 index bb2ff8202..000000000 --- a/templates/oam/workloads/1.7.8/attributemanifest.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "attributes": { - "additionalProperties": { - "properties": { - "description": { - "description": "A human-readable description of the attribute's purpose.", - "format": "string", - "type": "string" - }, - "valueType": { - "description": "The type of data carried by this attribute.", - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "STRING", - "INT64", - "DOUBLE", - "BOOL", - "TIMESTAMP", - "IP_ADDRESS", - "EMAIL_ADDRESS", - "URI", - "DNS_NAME", - "DURATION", - "STRING_MAP" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "The set of attributes this Istio component will be responsible for producing at runtime.", - "type": "object" - }, - "name": { - "description": "Name of the component producing these attributes.", - "format": "string", - "type": "string" - }, - "revision": { - "description": "The revision of this document.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/attributemanifest.istio_definition.json b/templates/oam/workloads/1.7.8/attributemanifest.istio_definition.json deleted file mode 100644 index ade805a37..000000000 --- a/templates/oam/workloads/1.7.8/attributemanifest.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "attributemanifest.Istio" - }, - "spec": { - "definitionRef": { - "name": "attributemanifest.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "attributemanifest" - } - } -} diff --git a/templates/oam/workloads/1.7.8/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5c288b1d2..000000000 --- a/templates/oam/workloads/1.7.8/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT" - ], - "type": "string" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.7.8/authorizationpolicy.istio_definition.json deleted file mode 100644 index 566a555b3..000000000 --- a/templates/oam/workloads/1.7.8/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5a1beada0 --- /dev/null +++ b/templates/oam/workloads/1.7.8/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 72a54798a..000000000 --- a/templates/oam/workloads/1.7.8/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1741 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/destinationrule.istio_definition.json b/templates/oam/workloads/1.7.8/destinationrule.istio_definition.json deleted file mode 100644 index c5918b52c..000000000 --- a/templates/oam/workloads/1.7.8/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7c630f130 --- /dev/null +++ b/templates/oam/workloads/1.7.8/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 10e1e953a..000000000 --- a/templates/oam/workloads/1.7.8/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to SIDECAR_INBOUND context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/envoyfilter.istio_definition.json b/templates/oam/workloads/1.7.8/envoyfilter.istio_definition.json deleted file mode 100644 index 9b977fe07..000000000 --- a/templates/oam/workloads/1.7.8/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f5cc467e --- /dev/null +++ b/templates/oam/workloads/1.7.8/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.7.8/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/gateway.istio_definition.json b/templates/oam/workloads/1.7.8/gateway.istio_definition.json deleted file mode 100644 index 7f1fa802d..000000000 --- a/templates/oam/workloads/1.7.8/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..39d9cf486 --- /dev/null +++ b/templates/oam/workloads/1.7.8/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/handler.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/handler.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7deab1df1..000000000 --- a/templates/oam/workloads/1.7.8/handler.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "description": "Handler allows the operator to configure a specific adapter implementation.", - "properties": { - "adapter": { - "description": "The name of a specific adapter implementation.", - "format": "string", - "type": "string" - }, - "compiledAdapter": { - "description": "The name of the compiled in adapter this handler instantiates.", - "format": "string", - "type": "string" - }, - "connection": { - "description": "Information on how to connect to the out-of-process adapter.", - "properties": { - "address": { - "description": "The address of the backend.", - "format": "string", - "type": "string" - }, - "authentication": { - "description": "Auth config for the connection to the backend.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ] - } - }, - { - "properties": { - "tls": { - "allOf": [ - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - } - }, - { - "required": [ - "tokenPath" - ] - }, - { - "required": [ - "oauth" - ] - } - ] - }, - { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - }, - { - "required": [ - "authHeader" - ] - }, - { - "required": [ - "customHeader" - ] - } - ] - } - ] - } - }, - "required": [ - "tls" - ] - }, - { - "required": [ - "mutual" - ] - } - ], - "properties": { - "mutual": { - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "The path to the file holding client certificate for mutual TLS.", - "format": "string", - "type": "string" - }, - "privateKey": { - "description": "The path to the file holding the private key for mutual TLS.", - "format": "string", - "type": "string" - }, - "serverName": { - "description": "Used to configure mixer mutual TLS client to supply server name for SNI.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "tls": { - "properties": { - "authHeader": { - "description": "Access token is passed as authorization header.", - "enum": [ - "PLAIN", - "BEARER" - ], - "type": "string" - }, - "caCertificates": { - "format": "string", - "type": "string" - }, - "customHeader": { - "description": "Customized header key to hold access token, e.g.", - "format": "string", - "type": "string" - }, - "oauth": { - "description": "Oauth config to fetch access token from auth provider.", - "properties": { - "clientId": { - "description": "OAuth client id for mixer.", - "format": "string", - "type": "string" - }, - "clientSecret": { - "description": "The path to the file holding the client secret for oauth.", - "format": "string", - "type": "string" - }, - "endpointParams": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Additional parameters for requests to the token endpoint.", - "type": "object" - }, - "scopes": { - "description": "List of requested permissions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "tokenUrl": { - "description": "The Resource server's token endpoint URL.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "serverName": { - "format": "string", - "type": "string" - }, - "tokenPath": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "timeout": { - "description": "Timeout for remote calls to the backend.", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Must be unique in the entire Mixer configuration.", - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on adapter implementation.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/handler.istio_definition.json b/templates/oam/workloads/1.7.8/handler.istio_definition.json deleted file mode 100644 index 169a71f0d..000000000 --- a/templates/oam/workloads/1.7.8/handler.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "handler.Istio" - }, - "spec": { - "definitionRef": { - "name": "handler.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "handler" - } - } -} diff --git a/templates/oam/workloads/1.7.8/httpapispec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/httpapispec.istio.meshery.layer5io.schema.json deleted file mode 100644 index f29508e97..000000000 --- a/templates/oam/workloads/1.7.8/httpapispec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,465 +0,0 @@ -{ - "properties": { - "api_keys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiKeys": { - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ] - } - }, - { - "required": [ - "query" - ] - }, - { - "required": [ - "header" - ] - }, - { - "required": [ - "cookie" - ] - } - ], - "properties": { - "cookie": { - "format": "string", - "type": "string" - }, - "header": { - "description": "API key is sent in a request header.", - "format": "string", - "type": "string" - }, - "query": { - "description": "API Key is sent as a query parameter.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "patterns": { - "description": "List of HTTP patterns to match.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "uriTemplate" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "attributes": { - "properties": { - "attributes": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ] - } - }, - { - "required": [ - "stringValue" - ] - }, - { - "required": [ - "int64Value" - ] - }, - { - "required": [ - "doubleValue" - ] - }, - { - "required": [ - "boolValue" - ] - }, - { - "required": [ - "bytesValue" - ] - }, - { - "required": [ - "timestampValue" - ] - }, - { - "required": [ - "durationValue" - ] - }, - { - "required": [ - "stringMapValue" - ] - } - ], - "properties": { - "boolValue": { - "type": "boolean" - }, - "bytesValue": { - "format": "binary", - "type": "string" - }, - "doubleValue": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - }, - "durationValue": { - "type": "string" - }, - "int64Value": { - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "stringMapValue": { - "properties": { - "entries": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Holds a set of name/value pairs.", - "type": "object" - } - }, - "type": "object" - }, - "stringValue": { - "format": "string", - "type": "string" - }, - "timestampValue": { - "format": "dateTime", - "type": "string" - } - }, - "type": "object" - }, - "description": "A map of attribute name to its value.", - "type": "object" - } - }, - "type": "object" - }, - "httpMethod": { - "format": "string", - "type": "string" - }, - "regex": { - "format": "string", - "type": "string" - }, - "uriTemplate": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/httpapispec.istio_definition.json b/templates/oam/workloads/1.7.8/httpapispec.istio_definition.json deleted file mode 100644 index 46379b2b6..000000000 --- a/templates/oam/workloads/1.7.8/httpapispec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpec" - } - } -} diff --git a/templates/oam/workloads/1.7.8/httpapispecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/httpapispecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index 45720e220..000000000 --- a/templates/oam/workloads/1.7.8/httpapispecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "properties": { - "api_specs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "apiSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the HTTPAPISpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the HTTPAPISpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed HTTPAPISpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/httpapispecbinding.istio_definition.json b/templates/oam/workloads/1.7.8/httpapispecbinding.istio_definition.json deleted file mode 100644 index de9b939ac..000000000 --- a/templates/oam/workloads/1.7.8/httpapispecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "HTTPAPISpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "httpapispecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "HTTPAPISpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.8/instance.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/instance.istio.meshery.layer5io.schema.json deleted file mode 100644 index ae7c997b6..000000000 --- a/templates/oam/workloads/1.7.8/instance.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "description": "An Instance tells Mixer how to create instances for particular template.", - "properties": { - "attributeBindings": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "compiledTemplate": { - "description": "The name of the compiled in template this instance creates instances for.", - "format": "string", - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - }, - "params": { - "description": "Depends on referenced template.", - "type": "object", - "x-kubernetes-preserve-unknown-fields": true - }, - "template": { - "description": "The name of the template this instance creates instances for.", - "format": "string", - "type": "string" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/instance.istio_definition.json b/templates/oam/workloads/1.7.8/instance.istio_definition.json deleted file mode 100644 index 700a7590e..000000000 --- a/templates/oam/workloads/1.7.8/instance.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "instance.Istio" - }, - "spec": { - "definitionRef": { - "name": "instance.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "instance" - } - } -} diff --git a/templates/oam/workloads/1.7.8/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.7.8/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/peerauthentication.istio_definition.json b/templates/oam/workloads/1.7.8/peerauthentication.istio_definition.json deleted file mode 100644 index 2aef2e2d2..000000000 --- a/templates/oam/workloads/1.7.8/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4360637eb --- /dev/null +++ b/templates/oam/workloads/1.7.8/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/quotaspec.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/quotaspec.istio.meshery.layer5io.schema.json deleted file mode 100644 index a40cfa2db..000000000 --- a/templates/oam/workloads/1.7.8/quotaspec.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "description": "Determines the quotas used for individual requests.", - "properties": { - "rules": { - "description": "A list of Quota rules.", - "items": { - "properties": { - "match": { - "description": "If empty, match all request.", - "items": { - "properties": { - "clause": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Map of attribute names to StringMatch type.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "quotas": { - "description": "The list of quotas to charge.", - "items": { - "properties": { - "charge": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "quota": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/quotaspec.istio_definition.json b/templates/oam/workloads/1.7.8/quotaspec.istio_definition.json deleted file mode 100644 index 018b4f605..000000000 --- a/templates/oam/workloads/1.7.8/quotaspec.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpec.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspec.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpec" - } - } -} diff --git a/templates/oam/workloads/1.7.8/quotaspecbinding.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/quotaspecbinding.istio.meshery.layer5io.schema.json deleted file mode 100644 index f938f6ad4..000000000 --- a/templates/oam/workloads/1.7.8/quotaspecbinding.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "properties": { - "quotaSpecs": { - "items": { - "properties": { - "name": { - "description": "The short name of the QuotaSpec.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the QuotaSpec.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "services": { - "description": "One or more services to map the listed QuotaSpec onto.", - "items": { - "properties": { - "domain": { - "description": "Domain suffix used to construct the service FQDN in implementations that support such specification.", - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "Optional one or more labels that uniquely identify the service version.", - "type": "object" - }, - "name": { - "description": "The short name of the service such as \"foo\".", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Optional namespace of the service.", - "format": "string", - "type": "string" - }, - "service": { - "description": "The service FQDN.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/quotaspecbinding.istio_definition.json b/templates/oam/workloads/1.7.8/quotaspecbinding.istio_definition.json deleted file mode 100644 index 66483cca2..000000000 --- a/templates/oam/workloads/1.7.8/quotaspecbinding.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "QuotaSpecBinding.Istio" - }, - "spec": { - "definitionRef": { - "name": "quotaspecbinding.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "QuotaSpecBinding" - } - } -} diff --git a/templates/oam/workloads/1.7.8/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.7.8/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/requestauthentication.istio_definition.json b/templates/oam/workloads/1.7.8/requestauthentication.istio_definition.json deleted file mode 100644 index 1cd8b24ea..000000000 --- a/templates/oam/workloads/1.7.8/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..29c1602a0 --- /dev/null +++ b/templates/oam/workloads/1.7.8/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/rule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/rule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 31e6fb33c..000000000 --- a/templates/oam/workloads/1.7.8/rule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "description": "Describes the rules used to configure Mixer's policy and telemetry features. See more details at: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html", - "properties": { - "actions": { - "description": "The actions that will be executed when match evaluates to `true`.", - "items": { - "properties": { - "handler": { - "description": "Fully qualified name of the handler to invoke.", - "format": "string", - "type": "string" - }, - "instances": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "A handle to refer to the results of the action.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "match": { - "description": "Match is an attribute based predicate.", - "format": "string", - "type": "string" - }, - "requestHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "responseHeaderOperations": { - "items": { - "properties": { - "name": { - "description": "Header name literal value.", - "format": "string", - "type": "string" - }, - "operation": { - "description": "Header operation type.", - "enum": [ - "REPLACE", - "REMOVE", - "APPEND" - ], - "type": "string" - }, - "values": { - "description": "Header value expressions.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "sampling": { - "properties": { - "random": { - "description": "Provides filtering of actions based on random selection per request.", - "properties": { - "attributeExpression": { - "description": "Specifies an attribute expression to use to override the numerator in the `percent_sampled` field.", - "format": "string", - "type": "string" - }, - "percentSampled": { - "description": "The default sampling rate, expressed as a percentage.", - "properties": { - "denominator": { - "description": "Specifies the denominator.", - "enum": [ - "HUNDRED", - "TEN_THOUSAND" - ], - "type": "string" - }, - "numerator": { - "description": "Specifies the numerator.", - "type": "integer" - } - }, - "type": "object" - }, - "useIndependentRandomness": { - "description": "By default sampling will be based on the value of the request header `x-request-id`.", - "type": "boolean" - } - }, - "type": "object" - }, - "rateLimit": { - "properties": { - "maxUnsampledEntries": { - "description": "Number of entries to allow during the `sampling_duration` before sampling is enforced.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - }, - "samplingDuration": { - "description": "Window in which to enforce the sampling rate.", - "type": "string" - }, - "samplingRate": { - "description": "The rate at which to sample entries once the unsampled limit has been reached.", - "format": "int64", - "type": "integer", - "minimum": -9223372036854776000, - "maximum": 9223372036854776000 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/rule.istio_definition.json b/templates/oam/workloads/1.7.8/rule.istio_definition.json deleted file mode 100644 index b413981a7..000000000 --- a/templates/oam/workloads/1.7.8/rule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "rule.Istio" - }, - "spec": { - "definitionRef": { - "name": "rule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "config.istio.io/v1alpha2", - "k8sKind": "rule" - } - } -} diff --git a/templates/oam/workloads/1.7.8/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.7.8/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/serviceentry.istio_definition.json b/templates/oam/workloads/1.7.8/serviceentry.istio_definition.json deleted file mode 100644 index 47d2c0bde..000000000 --- a/templates/oam/workloads/1.7.8/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9635946c1 --- /dev/null +++ b/templates/oam/workloads/1.7.8/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.7.8/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/sidecar.istio_definition.json b/templates/oam/workloads/1.7.8/sidecar.istio_definition.json deleted file mode 100644 index 0abf259f5..000000000 --- a/templates/oam/workloads/1.7.8/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3d54cd97b --- /dev/null +++ b/templates/oam/workloads/1.7.8/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..67b9205b8 --- /dev/null +++ b/templates/oam/workloads/1.7.8/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.7.8/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/virtualservice.istio_definition.json b/templates/oam/workloads/1.7.8/virtualservice.istio_definition.json deleted file mode 100644 index 5d3fc3f43..000000000 --- a/templates/oam/workloads/1.7.8/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..915d26085 --- /dev/null +++ b/templates/oam/workloads/1.7.8/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.7.8/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/workloadentry.istio_definition.json b/templates/oam/workloads/1.7.8/workloadentry.istio_definition.json deleted file mode 100644 index 4b578d398..000000000 --- a/templates/oam/workloads/1.7.8/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.7.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..775ca961a --- /dev/null +++ b/templates/oam/workloads/1.7.8/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13fe33606 --- /dev/null +++ b/templates/oam/workloads/1.7.8/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.7.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9f0d287ea --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..09fca8238 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e05c5b6e4 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3cfef670b --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..74e9adf38 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f071f875b --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1123176a7 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b909ef0a1 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..17b869a8e --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f8f5bb32f --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..464d23ee2 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..14efa4716 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bf7687190 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..df106ebc8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5ac9aef4e --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cb72d534f --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6b7e2ed1f --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da37a2c54 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..94318e8f8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e7b819395 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..687251004 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f36df41f --- /dev/null +++ b/templates/oam/workloads/1.8.0-alpha.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.0-alpha.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28af887b4 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..69ebc0bf0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..fec849392 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,290 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f8f6a7a63 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1c27a5d64 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..26a9659c6 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c2631eca0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d1979d394 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6eaf0f515 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5d0bae8a0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a68d11dda --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..30060f976 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3ce8bc56f --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4f276d65b --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d549e5e99 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fd55d5364 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a4abce17b --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..88418348c --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..71b4493ec --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..abbbb53fe --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..910016e5d --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d5b8a76bf --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8e249283 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5aa81987c --- /dev/null +++ b/templates/oam/workloads/1.8.0-rc.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.0-rc.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.8.0/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.0/authorizationpolicy.istio_definition.json deleted file mode 100644 index afa41ad9f..000000000 --- a/templates/oam/workloads/1.8.0/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b77451503 --- /dev/null +++ b/templates/oam/workloads/1.8.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.0/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.0/destinationrule.istio_definition.json deleted file mode 100644 index 9813096f7..000000000 --- a/templates/oam/workloads/1.8.0/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4e0d24d86 --- /dev/null +++ b/templates/oam/workloads/1.8.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.0/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.0/envoyfilter.istio_definition.json deleted file mode 100644 index 343148b72..000000000 --- a/templates/oam/workloads/1.8.0/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..816114c9a --- /dev/null +++ b/templates/oam/workloads/1.8.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.8.0/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/gateway.istio_definition.json b/templates/oam/workloads/1.8.0/gateway.istio_definition.json deleted file mode 100644 index 78b37f009..000000000 --- a/templates/oam/workloads/1.8.0/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..145f8e44c --- /dev/null +++ b/templates/oam/workloads/1.8.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.0/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.0/peerauthentication.istio_definition.json deleted file mode 100644 index dc0583e11..000000000 --- a/templates/oam/workloads/1.8.0/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77bef8590 --- /dev/null +++ b/templates/oam/workloads/1.8.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.0/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.0/requestauthentication.istio_definition.json deleted file mode 100644 index 64cc2079e..000000000 --- a/templates/oam/workloads/1.8.0/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0f479500b --- /dev/null +++ b/templates/oam/workloads/1.8.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.0/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.0/serviceentry.istio_definition.json deleted file mode 100644 index 55a3d83ac..000000000 --- a/templates/oam/workloads/1.8.0/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92b92a4c4 --- /dev/null +++ b/templates/oam/workloads/1.8.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.0/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/sidecar.istio_definition.json b/templates/oam/workloads/1.8.0/sidecar.istio_definition.json deleted file mode 100644 index 3a321eef9..000000000 --- a/templates/oam/workloads/1.8.0/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..255a0e34e --- /dev/null +++ b/templates/oam/workloads/1.8.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.0/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.0/virtualservice.istio_definition.json deleted file mode 100644 index 9bd906b02..000000000 --- a/templates/oam/workloads/1.8.0/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2c63bedb4 --- /dev/null +++ b/templates/oam/workloads/1.8.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.0/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.0/workloadentry.istio_definition.json deleted file mode 100644 index 43d0e2b21..000000000 --- a/templates/oam/workloads/1.8.0/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7e0c16de4 --- /dev/null +++ b/templates/oam/workloads/1.8.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.0/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.0/workloadgroup.istio_definition.json deleted file mode 100644 index 7bc45236b..000000000 --- a/templates/oam/workloads/1.8.0/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.0", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ca23830e3 --- /dev/null +++ b/templates/oam/workloads/1.8.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.8.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index 2f8f6c22c..000000000 --- a/templates/oam/workloads/1.8.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7772b879a --- /dev/null +++ b/templates/oam/workloads/1.8.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.1/destinationrule.istio_definition.json deleted file mode 100644 index 79a49b073..000000000 --- a/templates/oam/workloads/1.8.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e2711330 --- /dev/null +++ b/templates/oam/workloads/1.8.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.1/envoyfilter.istio_definition.json deleted file mode 100644 index 7b0794940..000000000 --- a/templates/oam/workloads/1.8.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..52b3ec5ae --- /dev/null +++ b/templates/oam/workloads/1.8.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.8.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/gateway.istio_definition.json b/templates/oam/workloads/1.8.1/gateway.istio_definition.json deleted file mode 100644 index d5b0b90a3..000000000 --- a/templates/oam/workloads/1.8.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..907513385 --- /dev/null +++ b/templates/oam/workloads/1.8.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.1/peerauthentication.istio_definition.json deleted file mode 100644 index 23676ee0d..000000000 --- a/templates/oam/workloads/1.8.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8caff9ec2 --- /dev/null +++ b/templates/oam/workloads/1.8.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.1/requestauthentication.istio_definition.json deleted file mode 100644 index f855dc122..000000000 --- a/templates/oam/workloads/1.8.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..590ba8d09 --- /dev/null +++ b/templates/oam/workloads/1.8.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.1/serviceentry.istio_definition.json deleted file mode 100644 index b1dee04bd..000000000 --- a/templates/oam/workloads/1.8.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3642c286c --- /dev/null +++ b/templates/oam/workloads/1.8.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/sidecar.istio_definition.json b/templates/oam/workloads/1.8.1/sidecar.istio_definition.json deleted file mode 100644 index 705d9960b..000000000 --- a/templates/oam/workloads/1.8.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f547aa9d0 --- /dev/null +++ b/templates/oam/workloads/1.8.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.1/virtualservice.istio_definition.json deleted file mode 100644 index 6804bf5ad..000000000 --- a/templates/oam/workloads/1.8.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cdfde75b5 --- /dev/null +++ b/templates/oam/workloads/1.8.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.1/workloadentry.istio_definition.json deleted file mode 100644 index 27692d255..000000000 --- a/templates/oam/workloads/1.8.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..23d7344f0 --- /dev/null +++ b/templates/oam/workloads/1.8.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.1/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.1/workloadgroup.istio_definition.json deleted file mode 100644 index d00588749..000000000 --- a/templates/oam/workloads/1.8.1/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..90883cd3c --- /dev/null +++ b/templates/oam/workloads/1.8.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index d0742b3e5..000000000 --- a/templates/oam/workloads/1.8.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index cf4ece0f1..000000000 --- a/templates/oam/workloads/1.8.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..16da649bc --- /dev/null +++ b/templates/oam/workloads/1.8.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.2/destinationrule.istio_definition.json deleted file mode 100644 index 2505029ce..000000000 --- a/templates/oam/workloads/1.8.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1cf66843f --- /dev/null +++ b/templates/oam/workloads/1.8.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.2/envoyfilter.istio_definition.json deleted file mode 100644 index 5c84ce273..000000000 --- a/templates/oam/workloads/1.8.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d94317b1e --- /dev/null +++ b/templates/oam/workloads/1.8.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.8.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/gateway.istio_definition.json b/templates/oam/workloads/1.8.2/gateway.istio_definition.json deleted file mode 100644 index 567c7f89d..000000000 --- a/templates/oam/workloads/1.8.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..077843234 --- /dev/null +++ b/templates/oam/workloads/1.8.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.2/peerauthentication.istio_definition.json deleted file mode 100644 index bfab5e6bf..000000000 --- a/templates/oam/workloads/1.8.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..31d183170 --- /dev/null +++ b/templates/oam/workloads/1.8.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.2/requestauthentication.istio_definition.json deleted file mode 100644 index e56264342..000000000 --- a/templates/oam/workloads/1.8.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5515eee1e --- /dev/null +++ b/templates/oam/workloads/1.8.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.2/serviceentry.istio_definition.json deleted file mode 100644 index b2dd85120..000000000 --- a/templates/oam/workloads/1.8.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba96ea4ec --- /dev/null +++ b/templates/oam/workloads/1.8.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/sidecar.istio_definition.json b/templates/oam/workloads/1.8.2/sidecar.istio_definition.json deleted file mode 100644 index 3deb0ed92..000000000 --- a/templates/oam/workloads/1.8.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f12450da2 --- /dev/null +++ b/templates/oam/workloads/1.8.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.2/virtualservice.istio_definition.json deleted file mode 100644 index 135be3eb9..000000000 --- a/templates/oam/workloads/1.8.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bab5aa6b6 --- /dev/null +++ b/templates/oam/workloads/1.8.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.2/workloadentry.istio_definition.json deleted file mode 100644 index 6a206b92c..000000000 --- a/templates/oam/workloads/1.8.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..faf799495 --- /dev/null +++ b/templates/oam/workloads/1.8.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.2/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.2/workloadgroup.istio_definition.json deleted file mode 100644 index 9078051ff..000000000 --- a/templates/oam/workloads/1.8.2/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8618bfdcb --- /dev/null +++ b/templates/oam/workloads/1.8.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index d0742b3e5..000000000 --- a/templates/oam/workloads/1.8.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index 4bf58f0e3..000000000 --- a/templates/oam/workloads/1.8.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b9dd32d8d --- /dev/null +++ b/templates/oam/workloads/1.8.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.3/destinationrule.istio_definition.json deleted file mode 100644 index 45d8e3a5f..000000000 --- a/templates/oam/workloads/1.8.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7b7507202 --- /dev/null +++ b/templates/oam/workloads/1.8.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.3/envoyfilter.istio_definition.json deleted file mode 100644 index 79b16a62b..000000000 --- a/templates/oam/workloads/1.8.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ae2daa97a --- /dev/null +++ b/templates/oam/workloads/1.8.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.8.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.8.3/gateway.istio_definition.json b/templates/oam/workloads/1.8.3/gateway.istio_definition.json deleted file mode 100644 index d7d0ed5b8..000000000 --- a/templates/oam/workloads/1.8.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f3c23e814 --- /dev/null +++ b/templates/oam/workloads/1.8.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.3/peerauthentication.istio_definition.json deleted file mode 100644 index 6d7f06b6d..000000000 --- a/templates/oam/workloads/1.8.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c77c2ae1f --- /dev/null +++ b/templates/oam/workloads/1.8.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.3/requestauthentication.istio_definition.json deleted file mode 100644 index de0f43ff2..000000000 --- a/templates/oam/workloads/1.8.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..82cbc4b7f --- /dev/null +++ b/templates/oam/workloads/1.8.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.3/serviceentry.istio_definition.json deleted file mode 100644 index 82b4e792f..000000000 --- a/templates/oam/workloads/1.8.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d2e11fbd2 --- /dev/null +++ b/templates/oam/workloads/1.8.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/sidecar.istio_definition.json b/templates/oam/workloads/1.8.3/sidecar.istio_definition.json deleted file mode 100644 index 9f31a6d76..000000000 --- a/templates/oam/workloads/1.8.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8442aea6b --- /dev/null +++ b/templates/oam/workloads/1.8.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7fc699f45 --- /dev/null +++ b/templates/oam/workloads/1.8.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.3/virtualservice.istio_definition.json deleted file mode 100644 index 3034c8d4f..000000000 --- a/templates/oam/workloads/1.8.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6a86eed84 --- /dev/null +++ b/templates/oam/workloads/1.8.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.3/workloadentry.istio_definition.json deleted file mode 100644 index 47923d596..000000000 --- a/templates/oam/workloads/1.8.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0b1c07a99 --- /dev/null +++ b/templates/oam/workloads/1.8.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.3/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.3/workloadgroup.istio_definition.json deleted file mode 100644 index 06cf95754..000000000 --- a/templates/oam/workloads/1.8.3/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bb45e5f07 --- /dev/null +++ b/templates/oam/workloads/1.8.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index d0742b3e5..000000000 --- a/templates/oam/workloads/1.8.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index ca3c4dc3a..000000000 --- a/templates/oam/workloads/1.8.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f9d0beaa --- /dev/null +++ b/templates/oam/workloads/1.8.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.4/destinationrule.istio_definition.json deleted file mode 100644 index 718050b42..000000000 --- a/templates/oam/workloads/1.8.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1b4e701c6 --- /dev/null +++ b/templates/oam/workloads/1.8.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.4/envoyfilter.istio_definition.json deleted file mode 100644 index 1cf55d7e2..000000000 --- a/templates/oam/workloads/1.8.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c6362f61d --- /dev/null +++ b/templates/oam/workloads/1.8.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.8.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.8.4/gateway.istio_definition.json b/templates/oam/workloads/1.8.4/gateway.istio_definition.json deleted file mode 100644 index 647195da4..000000000 --- a/templates/oam/workloads/1.8.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6ea47ea3a --- /dev/null +++ b/templates/oam/workloads/1.8.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.4/peerauthentication.istio_definition.json deleted file mode 100644 index 3fbf11e8d..000000000 --- a/templates/oam/workloads/1.8.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9a921def5 --- /dev/null +++ b/templates/oam/workloads/1.8.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.4/requestauthentication.istio_definition.json deleted file mode 100644 index 1239de007..000000000 --- a/templates/oam/workloads/1.8.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..207dfcb42 --- /dev/null +++ b/templates/oam/workloads/1.8.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.4/serviceentry.istio_definition.json deleted file mode 100644 index 512dab017..000000000 --- a/templates/oam/workloads/1.8.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c2846ba5d --- /dev/null +++ b/templates/oam/workloads/1.8.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/sidecar.istio_definition.json b/templates/oam/workloads/1.8.4/sidecar.istio_definition.json deleted file mode 100644 index 79c421bab..000000000 --- a/templates/oam/workloads/1.8.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6d46b02cc --- /dev/null +++ b/templates/oam/workloads/1.8.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a5b87ec31 --- /dev/null +++ b/templates/oam/workloads/1.8.4/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.4/virtualservice.istio_definition.json deleted file mode 100644 index 496ed93a6..000000000 --- a/templates/oam/workloads/1.8.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1a4b950b0 --- /dev/null +++ b/templates/oam/workloads/1.8.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.4/workloadentry.istio_definition.json deleted file mode 100644 index 782465147..000000000 --- a/templates/oam/workloads/1.8.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..376a20a9a --- /dev/null +++ b/templates/oam/workloads/1.8.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.4/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.4/workloadgroup.istio_definition.json deleted file mode 100644 index 652fe7949..000000000 --- a/templates/oam/workloads/1.8.4/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3a9553b64 --- /dev/null +++ b/templates/oam/workloads/1.8.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index d0742b3e5..000000000 --- a/templates/oam/workloads/1.8.5/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.5/authorizationpolicy.istio_definition.json deleted file mode 100644 index 097e95966..000000000 --- a/templates/oam/workloads/1.8.5/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..181e50aa0 --- /dev/null +++ b/templates/oam/workloads/1.8.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.5/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.5/destinationrule.istio_definition.json deleted file mode 100644 index ba14052a7..000000000 --- a/templates/oam/workloads/1.8.5/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..34fed9182 --- /dev/null +++ b/templates/oam/workloads/1.8.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.5/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.5/envoyfilter.istio_definition.json deleted file mode 100644 index fcf53e30c..000000000 --- a/templates/oam/workloads/1.8.5/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f715e887b --- /dev/null +++ b/templates/oam/workloads/1.8.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.8.5/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/gateway.istio_definition.json b/templates/oam/workloads/1.8.5/gateway.istio_definition.json deleted file mode 100644 index 22297c15c..000000000 --- a/templates/oam/workloads/1.8.5/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ad7ae5cfa --- /dev/null +++ b/templates/oam/workloads/1.8.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.5/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.5/peerauthentication.istio_definition.json deleted file mode 100644 index e5386cc35..000000000 --- a/templates/oam/workloads/1.8.5/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cbe2d11ed --- /dev/null +++ b/templates/oam/workloads/1.8.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.5/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.5/requestauthentication.istio_definition.json deleted file mode 100644 index ef98fccca..000000000 --- a/templates/oam/workloads/1.8.5/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4004c515a --- /dev/null +++ b/templates/oam/workloads/1.8.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.5/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.5/serviceentry.istio_definition.json deleted file mode 100644 index e8246efec..000000000 --- a/templates/oam/workloads/1.8.5/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5fb8c8348 --- /dev/null +++ b/templates/oam/workloads/1.8.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.5/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/sidecar.istio_definition.json b/templates/oam/workloads/1.8.5/sidecar.istio_definition.json deleted file mode 100644 index 86247d36b..000000000 --- a/templates/oam/workloads/1.8.5/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..28cb3b7ce --- /dev/null +++ b/templates/oam/workloads/1.8.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2a54ec194 --- /dev/null +++ b/templates/oam/workloads/1.8.5/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.5/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.5/virtualservice.istio_definition.json deleted file mode 100644 index d14bc58f9..000000000 --- a/templates/oam/workloads/1.8.5/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bdc8855b7 --- /dev/null +++ b/templates/oam/workloads/1.8.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.5/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.5/workloadentry.istio_definition.json deleted file mode 100644 index 25fa1dff0..000000000 --- a/templates/oam/workloads/1.8.5/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2d81fa6bf --- /dev/null +++ b/templates/oam/workloads/1.8.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.5/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.5/workloadgroup.istio_definition.json deleted file mode 100644 index c20216566..000000000 --- a/templates/oam/workloads/1.8.5/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7c1f4913c --- /dev/null +++ b/templates/oam/workloads/1.8.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index d0742b3e5..000000000 --- a/templates/oam/workloads/1.8.6/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.8.6/authorizationpolicy.istio_definition.json deleted file mode 100644 index 1789c7c39..000000000 --- a/templates/oam/workloads/1.8.6/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8beba2a30 --- /dev/null +++ b/templates/oam/workloads/1.8.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.8.6/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/destinationrule.istio_definition.json b/templates/oam/workloads/1.8.6/destinationrule.istio_definition.json deleted file mode 100644 index 4fee4970a..000000000 --- a/templates/oam/workloads/1.8.6/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8727211af --- /dev/null +++ b/templates/oam/workloads/1.8.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 19eda9673..000000000 --- a/templates/oam/workloads/1.8.6/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/envoyfilter.istio_definition.json b/templates/oam/workloads/1.8.6/envoyfilter.istio_definition.json deleted file mode 100644 index c0465e021..000000000 --- a/templates/oam/workloads/1.8.6/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..97fb9000e --- /dev/null +++ b/templates/oam/workloads/1.8.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.8.6/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/gateway.istio_definition.json b/templates/oam/workloads/1.8.6/gateway.istio_definition.json deleted file mode 100644 index 935e7d6c2..000000000 --- a/templates/oam/workloads/1.8.6/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f9690127 --- /dev/null +++ b/templates/oam/workloads/1.8.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.8.6/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/peerauthentication.istio_definition.json b/templates/oam/workloads/1.8.6/peerauthentication.istio_definition.json deleted file mode 100644 index 2036fb229..000000000 --- a/templates/oam/workloads/1.8.6/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..35fd3bf70 --- /dev/null +++ b/templates/oam/workloads/1.8.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.8.6/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/requestauthentication.istio_definition.json b/templates/oam/workloads/1.8.6/requestauthentication.istio_definition.json deleted file mode 100644 index fbc9eb3c6..000000000 --- a/templates/oam/workloads/1.8.6/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..794e4562b --- /dev/null +++ b/templates/oam/workloads/1.8.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.8.6/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/serviceentry.istio_definition.json b/templates/oam/workloads/1.8.6/serviceentry.istio_definition.json deleted file mode 100644 index 494ff588a..000000000 --- a/templates/oam/workloads/1.8.6/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9bad9d154 --- /dev/null +++ b/templates/oam/workloads/1.8.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.8.6/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/sidecar.istio_definition.json b/templates/oam/workloads/1.8.6/sidecar.istio_definition.json deleted file mode 100644 index d7097436e..000000000 --- a/templates/oam/workloads/1.8.6/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0a66fda42 --- /dev/null +++ b/templates/oam/workloads/1.8.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ce86578e8 --- /dev/null +++ b/templates/oam/workloads/1.8.6/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.8.6/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/virtualservice.istio_definition.json b/templates/oam/workloads/1.8.6/virtualservice.istio_definition.json deleted file mode 100644 index 7a9c625a2..000000000 --- a/templates/oam/workloads/1.8.6/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3f8309849 --- /dev/null +++ b/templates/oam/workloads/1.8.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.8.6/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadentry.istio_definition.json b/templates/oam/workloads/1.8.6/workloadentry.istio_definition.json deleted file mode 100644 index de06a7094..000000000 --- a/templates/oam/workloads/1.8.6/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13c44c36f --- /dev/null +++ b/templates/oam/workloads/1.8.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 4cea81deb..000000000 --- a/templates/oam/workloads/1.8.6/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadgroup.istio_definition.json b/templates/oam/workloads/1.8.6/workloadgroup.istio_definition.json deleted file mode 100644 index ee72c290c..000000000 --- a/templates/oam/workloads/1.8.6/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.8.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7af29d591 --- /dev/null +++ b/templates/oam/workloads/1.8.6/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.8.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..cfe935e2f --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8cb3d2599 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6283b4739 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e59fd277e --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..18706832f --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..44f30d548 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f34cb2b02 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d0c38e63b --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f80f68b49 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5b080dd96 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4e484d323 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8769eb2f4 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..af2f3f598 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b12711212 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b457901a3 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f909dc92 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..774c23d9a --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c99d4e741 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..678d3ec17 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a28182533 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e5aec711 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..09f20ca9d --- /dev/null +++ b/templates/oam/workloads/1.9.0-beta.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.0-beta.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..656535bf9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,271 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..500f6b926 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..926eab953 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..f0b6e0fdc --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,294 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d4ffa7575 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bc2385fca --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1fcc34eb6 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f88897c25 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8ea77e036 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..60d147c4a --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..e8b3a0aa0 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per retry attempt for a given request.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..844cc9e93 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..46e18e5e3 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5632ff63f --- /dev/null +++ b/templates/oam/workloads/1.9.0-rc.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.0-rc.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d64d47255 --- /dev/null +++ b/templates/oam/workloads/1.9.0/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7496837e5 --- /dev/null +++ b/templates/oam/workloads/1.9.0/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..66badfdde --- /dev/null +++ b/templates/oam/workloads/1.9.0/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2251ff099 --- /dev/null +++ b/templates/oam/workloads/1.9.0/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..91ba0de7d --- /dev/null +++ b/templates/oam/workloads/1.9.0/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..720dd9c97 --- /dev/null +++ b/templates/oam/workloads/1.9.0/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..2c2cfae15 --- /dev/null +++ b/templates/oam/workloads/1.9.0/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b7b02ede1 --- /dev/null +++ b/templates/oam/workloads/1.9.0/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f7880732c --- /dev/null +++ b/templates/oam/workloads/1.9.0/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c5a24469f --- /dev/null +++ b/templates/oam/workloads/1.9.0/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c8bc07d50 --- /dev/null +++ b/templates/oam/workloads/1.9.0/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b617b348f --- /dev/null +++ b/templates/oam/workloads/1.9.0/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.0" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.1/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.1/authorizationpolicy.istio_definition.json deleted file mode 100644 index e259230fe..000000000 --- a/templates/oam/workloads/1.9.1/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b4eb257df --- /dev/null +++ b/templates/oam/workloads/1.9.1/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.1/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.1/destinationrule.istio_definition.json deleted file mode 100644 index ff05c47a8..000000000 --- a/templates/oam/workloads/1.9.1/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d6e6587a9 --- /dev/null +++ b/templates/oam/workloads/1.9.1/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.1/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.1/envoyfilter.istio_definition.json deleted file mode 100644 index 1fbdd8d9d..000000000 --- a/templates/oam/workloads/1.9.1/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..92afe6873 --- /dev/null +++ b/templates/oam/workloads/1.9.1/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.1/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.1/gateway.istio_definition.json b/templates/oam/workloads/1.9.1/gateway.istio_definition.json deleted file mode 100644 index ded8a2836..000000000 --- a/templates/oam/workloads/1.9.1/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..051c9847e --- /dev/null +++ b/templates/oam/workloads/1.9.1/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.1/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.1/peerauthentication.istio_definition.json deleted file mode 100644 index c3e2b7410..000000000 --- a/templates/oam/workloads/1.9.1/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..de7927d99 --- /dev/null +++ b/templates/oam/workloads/1.9.1/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.1/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.1/requestauthentication.istio_definition.json deleted file mode 100644 index 6721cb6d4..000000000 --- a/templates/oam/workloads/1.9.1/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..39ac5924b --- /dev/null +++ b/templates/oam/workloads/1.9.1/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.1/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.1/serviceentry.istio_definition.json deleted file mode 100644 index d907cd08a..000000000 --- a/templates/oam/workloads/1.9.1/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1616d90bd --- /dev/null +++ b/templates/oam/workloads/1.9.1/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.1/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/sidecar.istio_definition.json b/templates/oam/workloads/1.9.1/sidecar.istio_definition.json deleted file mode 100644 index f3da2e3cd..000000000 --- a/templates/oam/workloads/1.9.1/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..77b246812 --- /dev/null +++ b/templates/oam/workloads/1.9.1/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d8d9671c9 --- /dev/null +++ b/templates/oam/workloads/1.9.1/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 517ba27e0..000000000 --- a/templates/oam/workloads/1.9.1/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per retry attempt for a given request.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.1/virtualservice.istio_definition.json deleted file mode 100644 index 3d6e87c3c..000000000 --- a/templates/oam/workloads/1.9.1/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b38910767 --- /dev/null +++ b/templates/oam/workloads/1.9.1/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.1/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.1/workloadentry.istio_definition.json deleted file mode 100644 index ebef3786f..000000000 --- a/templates/oam/workloads/1.9.1/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e4113d50d --- /dev/null +++ b/templates/oam/workloads/1.9.1/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.1/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.1/workloadgroup.istio_definition.json deleted file mode 100644 index e50f46dbb..000000000 --- a/templates/oam/workloads/1.9.1/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.1", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1e499042e --- /dev/null +++ b/templates/oam/workloads/1.9.1/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.1" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.2/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.2/authorizationpolicy.istio_definition.json deleted file mode 100644 index eca151b47..000000000 --- a/templates/oam/workloads/1.9.2/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f0be0c1b --- /dev/null +++ b/templates/oam/workloads/1.9.2/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.2/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.2/destinationrule.istio_definition.json deleted file mode 100644 index 802339f7a..000000000 --- a/templates/oam/workloads/1.9.2/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9dd89881f --- /dev/null +++ b/templates/oam/workloads/1.9.2/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.2/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.2/envoyfilter.istio_definition.json deleted file mode 100644 index 4fcf800ce..000000000 --- a/templates/oam/workloads/1.9.2/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..61de6e17f --- /dev/null +++ b/templates/oam/workloads/1.9.2/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.2/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.2/gateway.istio_definition.json b/templates/oam/workloads/1.9.2/gateway.istio_definition.json deleted file mode 100644 index 7a5c46832..000000000 --- a/templates/oam/workloads/1.9.2/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7b6ce0013 --- /dev/null +++ b/templates/oam/workloads/1.9.2/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.2/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.2/peerauthentication.istio_definition.json deleted file mode 100644 index 42df89b85..000000000 --- a/templates/oam/workloads/1.9.2/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e98088638 --- /dev/null +++ b/templates/oam/workloads/1.9.2/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.2/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.2/requestauthentication.istio_definition.json deleted file mode 100644 index 23db59402..000000000 --- a/templates/oam/workloads/1.9.2/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..afc7562c8 --- /dev/null +++ b/templates/oam/workloads/1.9.2/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.2/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.2/serviceentry.istio_definition.json deleted file mode 100644 index e3493a13d..000000000 --- a/templates/oam/workloads/1.9.2/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..f0a7e2ec5 --- /dev/null +++ b/templates/oam/workloads/1.9.2/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.2/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/sidecar.istio_definition.json b/templates/oam/workloads/1.9.2/sidecar.istio_definition.json deleted file mode 100644 index 34f611e1c..000000000 --- a/templates/oam/workloads/1.9.2/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..555f214c9 --- /dev/null +++ b/templates/oam/workloads/1.9.2/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7bc546a8f --- /dev/null +++ b/templates/oam/workloads/1.9.2/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.2/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.2/virtualservice.istio_definition.json deleted file mode 100644 index d28f80723..000000000 --- a/templates/oam/workloads/1.9.2/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e86655e8e --- /dev/null +++ b/templates/oam/workloads/1.9.2/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.2/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.2/workloadentry.istio_definition.json deleted file mode 100644 index 6f0b8c0c6..000000000 --- a/templates/oam/workloads/1.9.2/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9e9e92d64 --- /dev/null +++ b/templates/oam/workloads/1.9.2/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.2/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.2/workloadgroup.istio_definition.json deleted file mode 100644 index 3195e61d9..000000000 --- a/templates/oam/workloads/1.9.2/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.2", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..747a611bc --- /dev/null +++ b/templates/oam/workloads/1.9.2/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.2" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.3/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.3/authorizationpolicy.istio_definition.json deleted file mode 100644 index fa00d76b1..000000000 --- a/templates/oam/workloads/1.9.3/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b28e5c370 --- /dev/null +++ b/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,272 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "format": "string", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4cd341246 --- /dev/null +++ b/templates/oam/workloads/1.9.3/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.3/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.3/destinationrule.istio_definition.json deleted file mode 100644 index 2dea0e73b..000000000 --- a/templates/oam/workloads/1.9.3/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fbb9f70e --- /dev/null +++ b/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1669 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "format": "string", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "format": "string", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "format": "string", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "format": "string", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "format": "string", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "format": "string", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "format": "string", + "type": "string" + }, + "to": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "format": "string", + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e7b16efb --- /dev/null +++ b/templates/oam/workloads/1.9.3/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.3/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.3/envoyfilter.istio_definition.json deleted file mode 100644 index 582282e6f..000000000 --- a/templates/oam/workloads/1.9.3/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a4a98539f --- /dev/null +++ b/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,295 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "format": "string", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "format": "string", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "format": "string", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "format": "string", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "format": "string", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "format": "string", + "type": "string" + }, + "portName": { + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "format": "string", + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "format": "string", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "format": "string", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..edfbc458c --- /dev/null +++ b/templates/oam/workloads/1.9.3/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.3/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.3/gateway.istio_definition.json b/templates/oam/workloads/1.9.3/gateway.istio_definition.json deleted file mode 100644 index ea5e4954d..000000000 --- a/templates/oam/workloads/1.9.3/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9acde57f2 --- /dev/null +++ b/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,155 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "format": "string", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "format": "string", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "format": "string", + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "format": "string", + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6ecea4749 --- /dev/null +++ b/templates/oam/workloads/1.9.3/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.3/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.3/peerauthentication.istio_definition.json deleted file mode 100644 index 5621169da..000000000 --- a/templates/oam/workloads/1.9.3/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..17587af4b --- /dev/null +++ b/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,55 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..adfeaa02d --- /dev/null +++ b/templates/oam/workloads/1.9.3/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.3/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.3/requestauthentication.istio_definition.json deleted file mode 100644 index 2a751a513..000000000 --- a/templates/oam/workloads/1.9.3/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..af0e81123 --- /dev/null +++ b/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,89 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "format": "string", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "format": "string", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "format": "string", + "type": "string" + }, + "jwksUri": { + "format": "string", + "type": "string" + }, + "jwks_uri": { + "format": "string", + "type": "string" + }, + "outputPayloadToHeader": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..56be67469 --- /dev/null +++ b/templates/oam/workloads/1.9.3/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.3/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.3/serviceentry.istio_definition.json deleted file mode 100644 index d1cafab78..000000000 --- a/templates/oam/workloads/1.9.3/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..231edd453 --- /dev/null +++ b/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,138 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5157993e2 --- /dev/null +++ b/templates/oam/workloads/1.9.3/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.3/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/sidecar.istio_definition.json b/templates/oam/workloads/1.9.3/sidecar.istio_definition.json deleted file mode 100644 index 971985c10..000000000 --- a/templates/oam/workloads/1.9.3/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..9f8a1d6c8 --- /dev/null +++ b/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,154 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "format": "string", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "format": "string", + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "format": "string", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "format": "string", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..42f779656 --- /dev/null +++ b/templates/oam/workloads/1.9.3/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4ca2e9f4f --- /dev/null +++ b/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,142 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "format": "string", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "format": "string", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8e0fc6b80 --- /dev/null +++ b/templates/oam/workloads/1.9.3/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.3/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.3/virtualservice.istio_definition.json deleted file mode 100644 index e585c0a40..000000000 --- a/templates/oam/workloads/1.9.3/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..73ea54e88 --- /dev/null +++ b/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1174 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "format": "string", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "format": "string", + "type": "string" + }, + "http2Error": { + "format": "string", + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "format": "string", + "type": "string" + }, + "prefix": { + "format": "string", + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "format": "string", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "format": "string", + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "format": "string", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "format": "string", + "type": "string" + }, + "uri": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4fe35da26 --- /dev/null +++ b/templates/oam/workloads/1.9.3/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.3/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.3/workloadentry.istio_definition.json deleted file mode 100644 index ea94b0585..000000000 --- a/templates/oam/workloads/1.9.3/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..075d470f9 --- /dev/null +++ b/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,43 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6f45ec827 --- /dev/null +++ b/templates/oam/workloads/1.9.3/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.3/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.3/workloadgroup.istio_definition.json deleted file mode 100644 index 905d23b6e..000000000 --- a/templates/oam/workloads/1.9.3/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.3", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..4658879d8 --- /dev/null +++ b/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,205 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "format": "string", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "format": "string", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "format": "string", + "type": "string" + }, + "value": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "format": "string", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "format": "string", + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "format": "string", + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "format": "string", + "type": "string" + }, + "labels": { + "additionalProperties": { + "format": "string", + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "format": "string", + "type": "string" + }, + "network": { + "format": "string", + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "format": "string", + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4c8fdd808 --- /dev/null +++ b/templates/oam/workloads/1.9.3/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.3" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.4/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.4/authorizationpolicy.istio_definition.json deleted file mode 100644 index 4ba358629..000000000 --- a/templates/oam/workloads/1.9.4/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..962cdcb60 --- /dev/null +++ b/templates/oam/workloads/1.9.4/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.4/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.4/destinationrule.istio_definition.json deleted file mode 100644 index 8b8a27279..000000000 --- a/templates/oam/workloads/1.9.4/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a7ef8e9e1 --- /dev/null +++ b/templates/oam/workloads/1.9.4/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.4/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.4/envoyfilter.istio_definition.json deleted file mode 100644 index 7c03c9f7c..000000000 --- a/templates/oam/workloads/1.9.4/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..887fac861 --- /dev/null +++ b/templates/oam/workloads/1.9.4/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.4/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.4/gateway.istio_definition.json b/templates/oam/workloads/1.9.4/gateway.istio_definition.json deleted file mode 100644 index 56222ede8..000000000 --- a/templates/oam/workloads/1.9.4/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d1f43d5a4 --- /dev/null +++ b/templates/oam/workloads/1.9.4/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.4/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.4/peerauthentication.istio_definition.json deleted file mode 100644 index 143806d6e..000000000 --- a/templates/oam/workloads/1.9.4/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9c467b7ce --- /dev/null +++ b/templates/oam/workloads/1.9.4/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.4/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.4/requestauthentication.istio_definition.json deleted file mode 100644 index 1dd56b9c8..000000000 --- a/templates/oam/workloads/1.9.4/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..dda8f78a0 --- /dev/null +++ b/templates/oam/workloads/1.9.4/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.4/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.4/serviceentry.istio_definition.json deleted file mode 100644 index 37fd28bb2..000000000 --- a/templates/oam/workloads/1.9.4/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..63f55ba2e --- /dev/null +++ b/templates/oam/workloads/1.9.4/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.4/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/sidecar.istio_definition.json b/templates/oam/workloads/1.9.4/sidecar.istio_definition.json deleted file mode 100644 index 6cb562316..000000000 --- a/templates/oam/workloads/1.9.4/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..53d0293e4 --- /dev/null +++ b/templates/oam/workloads/1.9.4/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c69c849e6 --- /dev/null +++ b/templates/oam/workloads/1.9.4/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.4/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.4/virtualservice.istio_definition.json deleted file mode 100644 index bc736fc00..000000000 --- a/templates/oam/workloads/1.9.4/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d0285a3ee --- /dev/null +++ b/templates/oam/workloads/1.9.4/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.4/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.4/workloadentry.istio_definition.json deleted file mode 100644 index bb0b2e8c5..000000000 --- a/templates/oam/workloads/1.9.4/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8fb824065 --- /dev/null +++ b/templates/oam/workloads/1.9.4/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.4/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.4/workloadgroup.istio_definition.json deleted file mode 100644 index 951a304be..000000000 --- a/templates/oam/workloads/1.9.4/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.4", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..763e17c07 --- /dev/null +++ b/templates/oam/workloads/1.9.4/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.4" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.5/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.5/authorizationpolicy.istio_definition.json deleted file mode 100644 index 14e1a39fc..000000000 --- a/templates/oam/workloads/1.9.5/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4733e313 --- /dev/null +++ b/templates/oam/workloads/1.9.5/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.5/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.5/destinationrule.istio_definition.json deleted file mode 100644 index 8637c745a..000000000 --- a/templates/oam/workloads/1.9.5/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..67c944c6b --- /dev/null +++ b/templates/oam/workloads/1.9.5/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.5/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.5/envoyfilter.istio_definition.json deleted file mode 100644 index 4170f3b61..000000000 --- a/templates/oam/workloads/1.9.5/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..bf6b554a1 --- /dev/null +++ b/templates/oam/workloads/1.9.5/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.5/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.5/gateway.istio_definition.json b/templates/oam/workloads/1.9.5/gateway.istio_definition.json deleted file mode 100644 index a181970fc..000000000 --- a/templates/oam/workloads/1.9.5/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9e41ef15c --- /dev/null +++ b/templates/oam/workloads/1.9.5/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.5/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.5/peerauthentication.istio_definition.json deleted file mode 100644 index b7977403d..000000000 --- a/templates/oam/workloads/1.9.5/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..20ed65a67 --- /dev/null +++ b/templates/oam/workloads/1.9.5/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.5/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.5/requestauthentication.istio_definition.json deleted file mode 100644 index 5e2daa5ec..000000000 --- a/templates/oam/workloads/1.9.5/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8cf2a2c0b --- /dev/null +++ b/templates/oam/workloads/1.9.5/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.5/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.5/serviceentry.istio_definition.json deleted file mode 100644 index 4f90f0cb8..000000000 --- a/templates/oam/workloads/1.9.5/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13b5c5d25 --- /dev/null +++ b/templates/oam/workloads/1.9.5/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.5/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/sidecar.istio_definition.json b/templates/oam/workloads/1.9.5/sidecar.istio_definition.json deleted file mode 100644 index 5ba6a2216..000000000 --- a/templates/oam/workloads/1.9.5/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fbc47d34b --- /dev/null +++ b/templates/oam/workloads/1.9.5/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a56d08672 --- /dev/null +++ b/templates/oam/workloads/1.9.5/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.5/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.5/virtualservice.istio_definition.json deleted file mode 100644 index 39f555556..000000000 --- a/templates/oam/workloads/1.9.5/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..eb7c49339 --- /dev/null +++ b/templates/oam/workloads/1.9.5/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.5/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.5/workloadentry.istio_definition.json deleted file mode 100644 index 6b318e2c9..000000000 --- a/templates/oam/workloads/1.9.5/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..aff341527 --- /dev/null +++ b/templates/oam/workloads/1.9.5/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.5/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.5/workloadgroup.istio_definition.json deleted file mode 100644 index 11fa277d5..000000000 --- a/templates/oam/workloads/1.9.5/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.5", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ab2de0568 --- /dev/null +++ b/templates/oam/workloads/1.9.5/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.5" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.6/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.6/authorizationpolicy.istio_definition.json deleted file mode 100644 index 2bc459b71..000000000 --- a/templates/oam/workloads/1.9.6/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..20cf50821 --- /dev/null +++ b/templates/oam/workloads/1.9.6/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.6/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.6/destinationrule.istio_definition.json deleted file mode 100644 index c0c8b93dd..000000000 --- a/templates/oam/workloads/1.9.6/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..adbf5548b --- /dev/null +++ b/templates/oam/workloads/1.9.6/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.6/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.6/envoyfilter.istio_definition.json deleted file mode 100644 index 9fb011d91..000000000 --- a/templates/oam/workloads/1.9.6/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e93abba90 --- /dev/null +++ b/templates/oam/workloads/1.9.6/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.6/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.6/gateway.istio_definition.json b/templates/oam/workloads/1.9.6/gateway.istio_definition.json deleted file mode 100644 index a4b7bdfef..000000000 --- a/templates/oam/workloads/1.9.6/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e987ea1de --- /dev/null +++ b/templates/oam/workloads/1.9.6/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.6/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.6/peerauthentication.istio_definition.json deleted file mode 100644 index dd9b91136..000000000 --- a/templates/oam/workloads/1.9.6/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..1dfdcb3a0 --- /dev/null +++ b/templates/oam/workloads/1.9.6/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.6/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.6/requestauthentication.istio_definition.json deleted file mode 100644 index e9ad336b1..000000000 --- a/templates/oam/workloads/1.9.6/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..b6a0515dd --- /dev/null +++ b/templates/oam/workloads/1.9.6/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.6/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.6/serviceentry.istio_definition.json deleted file mode 100644 index beff01d6b..000000000 --- a/templates/oam/workloads/1.9.6/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0ed56c326 --- /dev/null +++ b/templates/oam/workloads/1.9.6/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.6/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/sidecar.istio_definition.json b/templates/oam/workloads/1.9.6/sidecar.istio_definition.json deleted file mode 100644 index c0a0d6543..000000000 --- a/templates/oam/workloads/1.9.6/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..9be6d41b7 --- /dev/null +++ b/templates/oam/workloads/1.9.6/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..84b865e67 --- /dev/null +++ b/templates/oam/workloads/1.9.6/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.6/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.6/virtualservice.istio_definition.json deleted file mode 100644 index e3228a8dc..000000000 --- a/templates/oam/workloads/1.9.6/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..daf63dce8 --- /dev/null +++ b/templates/oam/workloads/1.9.6/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.6/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.6/workloadentry.istio_definition.json deleted file mode 100644 index dc18be236..000000000 --- a/templates/oam/workloads/1.9.6/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ba5d052db --- /dev/null +++ b/templates/oam/workloads/1.9.6/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.6/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.6/workloadgroup.istio_definition.json deleted file mode 100644 index 2c087abfa..000000000 --- a/templates/oam/workloads/1.9.6/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.6", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..901c90b8a --- /dev/null +++ b/templates/oam/workloads/1.9.6/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.6" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.7/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.7/authorizationpolicy.istio_definition.json deleted file mode 100644 index d938fe9b2..000000000 --- a/templates/oam/workloads/1.9.7/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8389ace17 --- /dev/null +++ b/templates/oam/workloads/1.9.7/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.7/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.7/destinationrule.istio_definition.json deleted file mode 100644 index f09d13396..000000000 --- a/templates/oam/workloads/1.9.7/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b149a46bd --- /dev/null +++ b/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1645 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute or failover can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only failover or distribute can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..efdd863cd --- /dev/null +++ b/templates/oam/workloads/1.9.7/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.7/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.7/envoyfilter.istio_definition.json deleted file mode 100644 index fb572d36a..000000000 --- a/templates/oam/workloads/1.9.7/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3c0475536 --- /dev/null +++ b/templates/oam/workloads/1.9.7/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 2d0cf8e4c..000000000 --- a/templates/oam/workloads/1.9.7/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/gateway.istio_definition.json b/templates/oam/workloads/1.9.7/gateway.istio_definition.json deleted file mode 100644 index a09a74b58..000000000 --- a/templates/oam/workloads/1.9.7/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8db9ab50a --- /dev/null +++ b/templates/oam/workloads/1.9.7/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.7/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.7/peerauthentication.istio_definition.json deleted file mode 100644 index d4ff13718..000000000 --- a/templates/oam/workloads/1.9.7/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..763a0332a --- /dev/null +++ b/templates/oam/workloads/1.9.7/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.7/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.7/requestauthentication.istio_definition.json deleted file mode 100644 index 1f195af39..000000000 --- a/templates/oam/workloads/1.9.7/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3fe25358e --- /dev/null +++ b/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the orginal token will be kept for the ustream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a095920e --- /dev/null +++ b/templates/oam/workloads/1.9.7/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.7/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.7/serviceentry.istio_definition.json deleted file mode 100644 index b4dc65883..000000000 --- a/templates/oam/workloads/1.9.7/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..3ebc46728 --- /dev/null +++ b/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,126 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..13a200a3d --- /dev/null +++ b/templates/oam/workloads/1.9.7/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.7/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/sidecar.istio_definition.json b/templates/oam/workloads/1.9.7/sidecar.istio_definition.json deleted file mode 100644 index efafc259a..000000000 --- a/templates/oam/workloads/1.9.7/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..d49d1904e --- /dev/null +++ b/templates/oam/workloads/1.9.7/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..a5f304b43 --- /dev/null +++ b/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry defines how the telemetry is generated for workloads within a mesh.", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7a03200ac --- /dev/null +++ b/templates/oam/workloads/1.9.7/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.7/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.7/virtualservice.istio_definition.json deleted file mode 100644 index 51c27c7ba..000000000 --- a/templates/oam/workloads/1.9.7/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..09d5b2e29 --- /dev/null +++ b/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1099 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "properties": { + "authority": { + "type": "string" + }, + "redirectCode": { + "type": "integer" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f02bb95a --- /dev/null +++ b/templates/oam/workloads/1.9.7/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.7/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.7/workloadentry.istio_definition.json deleted file mode 100644 index 90f9bbe7f..000000000 --- a/templates/oam/workloads/1.9.7/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..deb9589bf --- /dev/null +++ b/templates/oam/workloads/1.9.7/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.7/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.7/workloadgroup.istio_definition.json deleted file mode 100644 index eef369b60..000000000 --- a/templates/oam/workloads/1.9.7/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.7", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..7f610ba45 --- /dev/null +++ b/templates/oam/workloads/1.9.7/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.7" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5a71ad448..000000000 --- a/templates/oam/workloads/1.9.8/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.8/authorizationpolicy.istio_definition.json deleted file mode 100644 index 83bab2d55..000000000 --- a/templates/oam/workloads/1.9.8/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..812eb2d10 --- /dev/null +++ b/templates/oam/workloads/1.9.8/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.8/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.8/destinationrule.istio_definition.json deleted file mode 100644 index 70d21f88a..000000000 --- a/templates/oam/workloads/1.9.8/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..fa90ee836 --- /dev/null +++ b/templates/oam/workloads/1.9.8/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7df0798a4..000000000 --- a/templates/oam/workloads/1.9.8/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.8/envoyfilter.istio_definition.json deleted file mode 100644 index a56f19d0c..000000000 --- a/templates/oam/workloads/1.9.8/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..8fe01eae8 --- /dev/null +++ b/templates/oam/workloads/1.9.8/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.8/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.8/gateway.istio_definition.json b/templates/oam/workloads/1.9.8/gateway.istio_definition.json deleted file mode 100644 index 74b368b6c..000000000 --- a/templates/oam/workloads/1.9.8/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..122d86b95 --- /dev/null +++ b/templates/oam/workloads/1.9.8/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index e5604d301..000000000 --- a/templates/oam/workloads/1.9.8/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.8/peerauthentication.istio_definition.json deleted file mode 100644 index 193a9cef7..000000000 --- a/templates/oam/workloads/1.9.8/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e30291c97 --- /dev/null +++ b/templates/oam/workloads/1.9.8/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.8/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.8/requestauthentication.istio_definition.json deleted file mode 100644 index e97a279f9..000000000 --- a/templates/oam/workloads/1.9.8/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..edf3a7c36 --- /dev/null +++ b/templates/oam/workloads/1.9.8/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index a90abf40d..000000000 --- a/templates/oam/workloads/1.9.8/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.8/serviceentry.istio_definition.json deleted file mode 100644 index 7d3810305..000000000 --- a/templates/oam/workloads/1.9.8/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..6205f9672 --- /dev/null +++ b/templates/oam/workloads/1.9.8/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 956bf8f46..000000000 --- a/templates/oam/workloads/1.9.8/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/sidecar.istio_definition.json b/templates/oam/workloads/1.9.8/sidecar.istio_definition.json deleted file mode 100644 index f27025a16..000000000 --- a/templates/oam/workloads/1.9.8/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..510e460b2 --- /dev/null +++ b/templates/oam/workloads/1.9.8/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..702aa8bb3 --- /dev/null +++ b/templates/oam/workloads/1.9.8/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index 8659de99d..000000000 --- a/templates/oam/workloads/1.9.8/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.8/virtualservice.istio_definition.json deleted file mode 100644 index 67e251a6e..000000000 --- a/templates/oam/workloads/1.9.8/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..57035eec8 --- /dev/null +++ b/templates/oam/workloads/1.9.8/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..3031d55d3 --- /dev/null +++ b/templates/oam/workloads/1.9.8/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index 7176561a7..000000000 --- a/templates/oam/workloads/1.9.8/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.8/workloadentry.istio_definition.json deleted file mode 100644 index 9c1b03c78..000000000 --- a/templates/oam/workloads/1.9.8/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..52509b0ce --- /dev/null +++ b/templates/oam/workloads/1.9.8/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index ff0137b06..000000000 --- a/templates/oam/workloads/1.9.8/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.8/workloadgroup.istio_definition.json deleted file mode 100644 index fe990e30e..000000000 --- a/templates/oam/workloads/1.9.8/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.8", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..a8b12ee39 --- /dev/null +++ b/templates/oam/workloads/1.9.8/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.8" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/authorizationpolicy.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/authorizationpolicy.istio.meshery.layer5io.schema.json deleted file mode 100644 index 9372e5459..000000000 --- a/templates/oam/workloads/1.9.9/authorizationpolicy.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,272 +0,0 @@ -{ - "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - } - ] - } - }, - { - "required": [ - "provider" - ] - } - ], - "properties": { - "action": { - "description": "Optional.", - "enum": [ - "ALLOW", - "DENY", - "AUDIT", - "CUSTOM" - ], - "type": "string" - }, - "provider": { - "description": "Specifies detailed configuration of the CUSTOM action.", - "properties": { - "name": { - "description": "Specifies the name of the extension provider.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "rules": { - "description": "Optional.", - "items": { - "properties": { - "from": { - "description": "Optional.", - "items": { - "properties": { - "source": { - "description": "Source specifies the source of a request.", - "properties": { - "ipBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "namespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notNamespaces": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRemoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notRequestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "principals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "remoteIpBlocks": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "requestPrincipals": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "to": { - "description": "Optional.", - "items": { - "properties": { - "operation": { - "description": "Operation specifies the operation of a request.", - "properties": { - "hosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "methods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notHosts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notMethods": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPaths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "notPorts": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "paths": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "ports": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "when": { - "description": "Optional.", - "items": { - "properties": { - "key": { - "description": "The name of an Istio attribute.", - "format": "string", - "type": "string" - }, - "notValues": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "values": { - "description": "Optional.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "Optional.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/authorizationpolicy.istio_definition.json b/templates/oam/workloads/1.9.9/authorizationpolicy.istio_definition.json deleted file mode 100644 index e49d83e4a..000000000 --- a/templates/oam/workloads/1.9.9/authorizationpolicy.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "AuthorizationPolicy.Istio" - }, - "spec": { - "definitionRef": { - "name": "authorizationpolicy.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "AuthorizationPolicy" - } - } -} diff --git a/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b40385b1d --- /dev/null +++ b/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,249 @@ +{ + "description": "Configuration for access control on workloads. See more details at: https://istio.io/docs/reference/config/security/authorization-policy.html", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + } + ] + } + }, + { + "required": [ + "provider" + ] + } + ], + "properties": { + "action": { + "description": "Optional.", + "enum": [ + "ALLOW", + "DENY", + "AUDIT", + "CUSTOM" + ], + "type": "string" + }, + "provider": { + "description": "Specifies detailed configuration of the CUSTOM action.", + "properties": { + "name": { + "description": "Specifies the name of the extension provider.", + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "description": "Optional.", + "items": { + "properties": { + "from": { + "description": "Optional.", + "items": { + "properties": { + "source": { + "description": "Source specifies the source of a request.", + "properties": { + "ipBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notNamespaces": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRemoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notRequestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "principals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remoteIpBlocks": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestPrincipals": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "to": { + "description": "Optional.", + "items": { + "properties": { + "operation": { + "description": "Operation specifies the operation of a request.", + "properties": { + "hosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "methods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notHosts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notMethods": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPaths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "notPorts": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "paths": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ports": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "when": { + "description": "Optional.", + "items": { + "properties": { + "key": { + "description": "The name of an Istio attribute.", + "type": "string" + }, + "notValues": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + }, + "values": { + "description": "Optional.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Authorization Policy", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io_definition.json new file mode 100755 index 000000000..934510483 --- /dev/null +++ b/templates/oam/workloads/1.9.9/authorizationpolicy.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "AuthorizationPolicy", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "authorizationpolicy.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "AuthorizationPolicy", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/destinationrule.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/destinationrule.istio.meshery.layer5io.schema.json deleted file mode 100644 index 3c0a39495..000000000 --- a/templates/oam/workloads/1.9.9/destinationrule.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1757 +0,0 @@ -{ - "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this destination rule is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "subsets": { - "items": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "name": { - "description": "Name of the subset.", - "format": "string", - "type": "string" - }, - "trafficPolicy": { - "description": "Traffic policies that apply to this subset.", - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "trafficPolicy": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "portLevelSettings": { - "description": "Traffic policies specific to individual ports.", - "items": { - "properties": { - "connectionPool": { - "properties": { - "http": { - "description": "HTTP connection pool settings.", - "properties": { - "h2UpgradePolicy": { - "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", - "enum": [ - "DEFAULT", - "DO_NOT_UPGRADE", - "UPGRADE" - ], - "type": "string" - }, - "http1MaxPendingRequests": { - "description": "Maximum number of pending HTTP requests to a destination.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "http2MaxRequests": { - "description": "Maximum number of requests to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "idleTimeout": { - "description": "The idle timeout for upstream connection pool connections.", - "type": "string" - }, - "maxRequestsPerConnection": { - "description": "Maximum number of requests per connection to a backend.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "maxRetries": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "useClientProtocol": { - "description": "If set to true, client protocol will be preserved while initiating connection to backend.", - "type": "boolean" - } - }, - "type": "object" - }, - "tcp": { - "description": "Settings common to both HTTP and TCP upstream connections.", - "properties": { - "connectTimeout": { - "description": "TCP connection timeout.", - "type": "string" - }, - "maxConnections": { - "description": "Maximum number of HTTP1 /TCP connections to a destination host.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpKeepalive": { - "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", - "properties": { - "interval": { - "description": "The time duration between keep-alive probes.", - "type": "string" - }, - "probes": { - "type": "integer" - }, - "time": { - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "loadBalancer": { - "description": "Settings controlling the load balancer algorithms.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ] - } - }, - { - "required": [ - "simple" - ] - }, - { - "properties": { - "consistentHash": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - { - "required": [ - "httpHeaderName" - ] - }, - { - "required": [ - "httpCookie" - ] - }, - { - "required": [ - "useSourceIp" - ] - }, - { - "required": [ - "httpQueryParameterName" - ] - } - ] - } - }, - "required": [ - "consistentHash" - ] - } - ], - "properties": { - "consistentHash": { - "properties": { - "httpCookie": { - "description": "Hash based on HTTP cookie.", - "properties": { - "name": { - "description": "Name of the cookie.", - "format": "string", - "type": "string" - }, - "path": { - "description": "Path to set for the cookie.", - "format": "string", - "type": "string" - }, - "ttl": { - "description": "Lifetime of the cookie.", - "type": "string" - } - }, - "type": "object" - }, - "httpHeaderName": { - "description": "Hash based on a specific HTTP header.", - "format": "string", - "type": "string" - }, - "httpQueryParameterName": { - "description": "Hash based on a specific HTTP query parameter.", - "format": "string", - "type": "string" - }, - "minimumRingSize": { - "type": "integer" - }, - "useSourceIp": { - "description": "Hash based on the source IP address.", - "type": "boolean" - } - }, - "type": "object" - }, - "localityLbSetting": { - "properties": { - "distribute": { - "description": "Optional: only one of distribute or failover can be set.", - "items": { - "properties": { - "from": { - "description": "Originating locality, '/' separated, e.g.", - "format": "string", - "type": "string" - }, - "to": { - "additionalProperties": { - "type": "integer" - }, - "description": "Map of upstream localities to traffic distribution weights.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "enabled": { - "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", - "type": [ - "boolean", - "null" - ] - }, - "failover": { - "description": "Optional: only failover or distribute can be set.", - "items": { - "properties": { - "from": { - "description": "Originating region.", - "format": "string", - "type": "string" - }, - "to": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "simple": { - "enum": [ - "ROUND_ROBIN", - "LEAST_CONN", - "RANDOM", - "PASSTHROUGH" - ], - "type": "string" - } - }, - "type": "object" - }, - "outlierDetection": { - "properties": { - "baseEjectionTime": { - "description": "Minimum ejection duration.", - "type": "string" - }, - "consecutive5xxErrors": { - "description": "Number of 5xx errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "consecutiveErrors": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "consecutiveGatewayErrors": { - "description": "Number of gateway errors before a host is ejected from the connection pool.", - "type": [ - "integer", - "null" - ] - }, - "interval": { - "description": "Time interval between ejection sweep analysis.", - "type": "string" - }, - "maxEjectionPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "minHealthPercent": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "port": { - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "description": "TLS related settings for connections to the upstream service.", - "properties": { - "caCertificates": { - "format": "string", - "type": "string" - }, - "clientCertificate": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "mode": { - "enum": [ - "DISABLE", - "SIMPLE", - "MUTUAL", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "SNI string to present to the server during TLS handshake.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/destinationrule.istio_definition.json b/templates/oam/workloads/1.9.9/destinationrule.istio_definition.json deleted file mode 100644 index 3f61fa16a..000000000 --- a/templates/oam/workloads/1.9.9/destinationrule.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "DestinationRule.Istio" - }, - "spec": { - "definitionRef": { - "name": "destinationrule.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "DestinationRule" - } - } -} diff --git a/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..70251d066 --- /dev/null +++ b/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1689 @@ +{ + "description": "Configuration affecting load balancing, outlier detection, etc. See more details at: https://istio.io/docs/reference/config/networking/destination-rule.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this destination rule is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "subsets": { + "items": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "description": "Name of the subset.", + "type": "string" + }, + "trafficPolicy": { + "description": "Traffic policies that apply to this subset.", + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficPolicy": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "portLevelSettings": { + "description": "Traffic policies specific to individual ports.", + "items": { + "properties": { + "connectionPool": { + "properties": { + "http": { + "description": "HTTP connection pool settings.", + "properties": { + "h2UpgradePolicy": { + "description": "Specify if http1.1 connection should be upgraded to http2 for the associated destination.", + "enum": [ + "DEFAULT", + "DO_NOT_UPGRADE", + "UPGRADE" + ], + "type": "string" + }, + "http1MaxPendingRequests": { + "description": "Maximum number of pending HTTP requests to a destination.", + "format": "int32", + "type": "integer" + }, + "http2MaxRequests": { + "description": "Maximum number of requests to a backend.", + "format": "int32", + "type": "integer" + }, + "idleTimeout": { + "description": "The idle timeout for upstream connection pool connections.", + "type": "string" + }, + "maxRequestsPerConnection": { + "description": "Maximum number of requests per connection to a backend.", + "format": "int32", + "type": "integer" + }, + "maxRetries": { + "format": "int32", + "type": "integer" + }, + "useClientProtocol": { + "description": "If set to true, client protocol will be preserved while initiating connection to backend.", + "type": "boolean" + } + }, + "type": "object" + }, + "tcp": { + "description": "Settings common to both HTTP and TCP upstream connections.", + "properties": { + "connectTimeout": { + "description": "TCP connection timeout.", + "type": "string" + }, + "maxConnections": { + "description": "Maximum number of HTTP1 /TCP connections to a destination host.", + "format": "int32", + "type": "integer" + }, + "tcpKeepalive": { + "description": "If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.", + "properties": { + "interval": { + "description": "The time duration between keep-alive probes.", + "type": "string" + }, + "probes": { + "type": "integer" + }, + "time": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loadBalancer": { + "description": "Settings controlling the load balancer algorithms.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ] + } + }, + { + "required": [ + "simple" + ] + }, + { + "properties": { + "consistentHash": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + { + "required": [ + "httpHeaderName" + ] + }, + { + "required": [ + "httpCookie" + ] + }, + { + "required": [ + "useSourceIp" + ] + }, + { + "required": [ + "httpQueryParameterName" + ] + } + ] + } + }, + "required": [ + "consistentHash" + ] + } + ], + "properties": { + "consistentHash": { + "properties": { + "httpCookie": { + "description": "Hash based on HTTP cookie.", + "properties": { + "name": { + "description": "Name of the cookie.", + "type": "string" + }, + "path": { + "description": "Path to set for the cookie.", + "type": "string" + }, + "ttl": { + "description": "Lifetime of the cookie.", + "type": "string" + } + }, + "type": "object" + }, + "httpHeaderName": { + "description": "Hash based on a specific HTTP header.", + "type": "string" + }, + "httpQueryParameterName": { + "description": "Hash based on a specific HTTP query parameter.", + "type": "string" + }, + "minimumRingSize": { + "type": "integer" + }, + "useSourceIp": { + "description": "Hash based on the source IP address.", + "type": "boolean" + } + }, + "type": "object" + }, + "localityLbSetting": { + "properties": { + "distribute": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating locality, '/' separated, e.g.", + "type": "string" + }, + "to": { + "additionalProperties": { + "type": "integer" + }, + "description": "Map of upstream localities to traffic distribution weights.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "description": "enable locality load balancing, this is DestinationRule-level and will override mesh wide settings in entirety.", + "nullable": true, + "type": "boolean" + }, + "failover": { + "description": "Optional: only one of distribute, failover or failoverPriority can be set.", + "items": { + "properties": { + "from": { + "description": "Originating region.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "failoverPriority": { + "description": "failoverPriority is an ordered list of labels used to sort endpoints to do priority based load balancing.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "simple": { + "enum": [ + "ROUND_ROBIN", + "LEAST_CONN", + "RANDOM", + "PASSTHROUGH" + ], + "type": "string" + } + }, + "type": "object" + }, + "outlierDetection": { + "properties": { + "baseEjectionTime": { + "description": "Minimum ejection duration.", + "type": "string" + }, + "consecutive5xxErrors": { + "description": "Number of 5xx errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveErrors": { + "format": "int32", + "type": "integer" + }, + "consecutiveGatewayErrors": { + "description": "Number of gateway errors before a host is ejected from the connection pool.", + "nullable": true, + "type": "integer" + }, + "consecutiveLocalOriginFailures": { + "nullable": true, + "type": "integer" + }, + "interval": { + "description": "Time interval between ejection sweep analysis.", + "type": "string" + }, + "maxEjectionPercent": { + "format": "int32", + "type": "integer" + }, + "minHealthPercent": { + "format": "int32", + "type": "integer" + }, + "splitExternalLocalOriginErrors": { + "description": "Determines whether to distinguish local origin failures from external errors.", + "type": "boolean" + } + }, + "type": "object" + }, + "port": { + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "description": "TLS related settings for connections to the upstream service.", + "properties": { + "caCertificates": { + "type": "string" + }, + "clientCertificate": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "credentialName": { + "type": "string" + }, + "insecureSkipVerify": { + "nullable": true, + "type": "boolean" + }, + "mode": { + "enum": [ + "DISABLE", + "SIMPLE", + "MUTUAL", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "sni": { + "description": "SNI string to present to the server during TLS handshake.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Destination Rule", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4dc7c5cff --- /dev/null +++ b/templates/oam/workloads/1.9.9/destinationrule.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "DestinationRule", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "destinationrule.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "DestinationRule", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/envoyfilter.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/envoyfilter.istio.meshery.layer5io.schema.json deleted file mode 100644 index 67582d9e6..000000000 --- a/templates/oam/workloads/1.9.9/envoyfilter.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", - "properties": { - "configPatches": { - "description": "One or more patches with match conditions.", - "items": { - "properties": { - "applyTo": { - "enum": [ - "INVALID", - "LISTENER", - "FILTER_CHAIN", - "NETWORK_FILTER", - "HTTP_FILTER", - "ROUTE_CONFIGURATION", - "VIRTUAL_HOST", - "HTTP_ROUTE", - "CLUSTER", - "EXTENSION_CONFIG" - ], - "type": "string" - }, - "match": { - "description": "Match on listener/route configuration/cluster.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ] - } - }, - { - "required": [ - "listener" - ] - }, - { - "required": [ - "routeConfiguration" - ] - }, - { - "required": [ - "cluster" - ] - } - ], - "properties": { - "cluster": { - "description": "Match on envoy cluster attributes.", - "properties": { - "name": { - "description": "The exact name of the cluster to match.", - "format": "string", - "type": "string" - }, - "portNumber": { - "description": "The service port for which this cluster was generated.", - "type": "integer" - }, - "service": { - "description": "The fully qualified service name for this cluster.", - "format": "string", - "type": "string" - }, - "subset": { - "description": "The subset associated with the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "context": { - "description": "The specific config generation context to match on.", - "enum": [ - "ANY", - "SIDECAR_INBOUND", - "SIDECAR_OUTBOUND", - "GATEWAY" - ], - "type": "string" - }, - "listener": { - "description": "Match on envoy listener attributes.", - "properties": { - "filterChain": { - "description": "Match a specific filter chain in a listener.", - "properties": { - "applicationProtocols": { - "description": "Applies only to sidecars.", - "format": "string", - "type": "string" - }, - "destinationPort": { - "description": "The destination_port value used by a filter chain's match condition.", - "type": "integer" - }, - "filter": { - "description": "The name of a specific filter to apply the patch to.", - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - }, - "subFilter": { - "properties": { - "name": { - "description": "The filter name to match on.", - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the filter chain.", - "format": "string", - "type": "string" - }, - "sni": { - "description": "The SNI value used by a filter chain's match condition.", - "format": "string", - "type": "string" - }, - "transportProtocol": { - "description": "Applies only to `SIDECAR_INBOUND` context.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "Match a specific listener by its name.", - "format": "string", - "type": "string" - }, - "portName": { - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - } - }, - "type": "object" - }, - "proxy": { - "description": "Match on properties associated with a proxy.", - "properties": { - "metadata": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "proxyVersion": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "routeConfiguration": { - "description": "Match on envoy HTTP route configuration attributes.", - "properties": { - "gateway": { - "format": "string", - "type": "string" - }, - "name": { - "description": "Route configuration name to match on.", - "format": "string", - "type": "string" - }, - "portName": { - "description": "Applicable only for GATEWAY context.", - "format": "string", - "type": "string" - }, - "portNumber": { - "type": "integer" - }, - "vhost": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "route": { - "description": "Match a specific route within the virtual host.", - "properties": { - "action": { - "description": "Match a route with specific action type.", - "enum": [ - "ANY", - "ROUTE", - "REDIRECT", - "DIRECT_RESPONSE" - ], - "type": "string" - }, - "name": { - "format": "string", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "patch": { - "description": "The patch to apply along with the operation.", - "properties": { - "filterClass": { - "description": "Determines the filter insertion order.", - "enum": [ - "UNSPECIFIED", - "AUTHN", - "AUTHZ", - "STATS" - ], - "type": "string" - }, - "operation": { - "description": "Determines how the patch should be applied.", - "enum": [ - "INVALID", - "MERGE", - "ADD", - "REMOVE", - "INSERT_BEFORE", - "INSERT_AFTER", - "INSERT_FIRST", - "REPLACE" - ], - "type": "string" - }, - "value": { - "description": "The JSON config of the object being patched.", - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/envoyfilter.istio_definition.json b/templates/oam/workloads/1.9.9/envoyfilter.istio_definition.json deleted file mode 100644 index 117fc052e..000000000 --- a/templates/oam/workloads/1.9.9/envoyfilter.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "EnvoyFilter.Istio" - }, - "spec": { - "definitionRef": { - "name": "envoyfilter.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "EnvoyFilter" - } - } -} diff --git a/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..312eeb76b --- /dev/null +++ b/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,282 @@ +{ + "description": "Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html", + "properties": { + "configPatches": { + "description": "One or more patches with match conditions.", + "items": { + "properties": { + "applyTo": { + "enum": [ + "INVALID", + "LISTENER", + "FILTER_CHAIN", + "NETWORK_FILTER", + "HTTP_FILTER", + "ROUTE_CONFIGURATION", + "VIRTUAL_HOST", + "HTTP_ROUTE", + "CLUSTER", + "EXTENSION_CONFIG", + "BOOTSTRAP" + ], + "type": "string" + }, + "match": { + "description": "Match on listener/route configuration/cluster.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ] + } + }, + { + "required": [ + "listener" + ] + }, + { + "required": [ + "routeConfiguration" + ] + }, + { + "required": [ + "cluster" + ] + } + ], + "properties": { + "cluster": { + "description": "Match on envoy cluster attributes.", + "properties": { + "name": { + "description": "The exact name of the cluster to match.", + "type": "string" + }, + "portNumber": { + "description": "The service port for which this cluster was generated.", + "type": "integer" + }, + "service": { + "description": "The fully qualified service name for this cluster.", + "type": "string" + }, + "subset": { + "description": "The subset associated with the service.", + "type": "string" + } + }, + "type": "object" + }, + "context": { + "description": "The specific config generation context to match on.", + "enum": [ + "ANY", + "SIDECAR_INBOUND", + "SIDECAR_OUTBOUND", + "GATEWAY" + ], + "type": "string" + }, + "listener": { + "description": "Match on envoy listener attributes.", + "properties": { + "filterChain": { + "description": "Match a specific filter chain in a listener.", + "properties": { + "applicationProtocols": { + "description": "Applies only to sidecars.", + "type": "string" + }, + "destinationPort": { + "description": "The destination_port value used by a filter chain's match condition.", + "type": "integer" + }, + "filter": { + "description": "The name of a specific filter to apply the patch to.", + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + }, + "subFilter": { + "properties": { + "name": { + "description": "The filter name to match on.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to the filter chain.", + "type": "string" + }, + "sni": { + "description": "The SNI value used by a filter chain's match condition.", + "type": "string" + }, + "transportProtocol": { + "description": "Applies only to `SIDECAR_INBOUND` context.", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Match a specific listener by its name.", + "type": "string" + }, + "portName": { + "type": "string" + }, + "portNumber": { + "type": "integer" + } + }, + "type": "object" + }, + "proxy": { + "description": "Match on properties associated with a proxy.", + "properties": { + "metadata": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "proxyVersion": { + "type": "string" + } + }, + "type": "object" + }, + "routeConfiguration": { + "description": "Match on envoy HTTP route configuration attributes.", + "properties": { + "gateway": { + "type": "string" + }, + "name": { + "description": "Route configuration name to match on.", + "type": "string" + }, + "portName": { + "description": "Applicable only for GATEWAY context.", + "type": "string" + }, + "portNumber": { + "type": "integer" + }, + "vhost": { + "properties": { + "name": { + "type": "string" + }, + "route": { + "description": "Match a specific route within the virtual host.", + "properties": { + "action": { + "description": "Match a route with specific action type.", + "enum": [ + "ANY", + "ROUTE", + "REDIRECT", + "DIRECT_RESPONSE" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "patch": { + "description": "The patch to apply along with the operation.", + "properties": { + "filterClass": { + "description": "Determines the filter insertion order.", + "enum": [ + "UNSPECIFIED", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "operation": { + "description": "Determines how the patch should be applied.", + "enum": [ + "INVALID", + "MERGE", + "ADD", + "REMOVE", + "INSERT_BEFORE", + "INSERT_AFTER", + "INSERT_FIRST", + "REPLACE" + ], + "type": "string" + }, + "value": { + "description": "The JSON config of the object being patched.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "priority": { + "description": "Priority defines the order in which patch sets are applied within a context.", + "format": "int32", + "type": "integer" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Envoy Filter", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io_definition.json new file mode 100755 index 000000000..44c4b7b2f --- /dev/null +++ b/templates/oam/workloads/1.9.9/envoyfilter.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "EnvoyFilter", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "envoyfilter.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "EnvoyFilter", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/gateway.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/gateway.istio.meshery.layer5io.schema.json deleted file mode 100644 index 368b8b84b..000000000 --- a/templates/oam/workloads/1.9.9/gateway.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", - "properties": { - "selector": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "servers": { - "description": "A list of server specifications.", - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "hosts": { - "description": "One or more hosts exposed by this gateway.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "An optional name of the server, when set must be unique across all servers.", - "format": "string", - "type": "string" - }, - "port": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "tls": { - "description": "Set of TLS related options that govern the server's behavior.", - "properties": { - "caCertificates": { - "description": "REQUIRED if mode is `MUTUAL`.", - "format": "string", - "type": "string" - }, - "cipherSuites": { - "description": "Optional: If specified, only support the specified cipher list.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "credentialName": { - "format": "string", - "type": "string" - }, - "httpsRedirect": { - "type": "boolean" - }, - "maxProtocolVersion": { - "description": "Optional: Maximum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "minProtocolVersion": { - "description": "Optional: Minimum TLS protocol version.", - "enum": [ - "TLS_AUTO", - "TLSV1_0", - "TLSV1_1", - "TLSV1_2", - "TLSV1_3" - ], - "type": "string" - }, - "mode": { - "enum": [ - "PASSTHROUGH", - "SIMPLE", - "MUTUAL", - "AUTO_PASSTHROUGH", - "ISTIO_MUTUAL" - ], - "type": "string" - }, - "privateKey": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "serverCertificate": { - "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", - "format": "string", - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateHash": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "verifyCertificateSpki": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/gateway.istio_definition.json b/templates/oam/workloads/1.9.9/gateway.istio_definition.json deleted file mode 100644 index 5a158bacc..000000000 --- a/templates/oam/workloads/1.9.9/gateway.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Gateway.Istio" - }, - "spec": { - "definitionRef": { - "name": "gateway.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Gateway" - } - } -} diff --git a/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..476346301 --- /dev/null +++ b/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,140 @@ +{ + "description": "Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html", + "properties": { + "selector": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "servers": { + "description": "A list of server specifications.", + "items": { + "properties": { + "bind": { + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "hosts": { + "description": "One or more hosts exposed by this gateway.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "An optional name of the server, when set must be unique across all servers.", + "type": "string" + }, + "port": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "tls": { + "description": "Set of TLS related options that govern the server's behavior.", + "properties": { + "caCertificates": { + "description": "REQUIRED if mode is `MUTUAL`.", + "type": "string" + }, + "cipherSuites": { + "description": "Optional: If specified, only support the specified cipher list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialName": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "maxProtocolVersion": { + "description": "Optional: Maximum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "minProtocolVersion": { + "description": "Optional: Minimum TLS protocol version.", + "enum": [ + "TLS_AUTO", + "TLSV1_0", + "TLSV1_1", + "TLSV1_2", + "TLSV1_3" + ], + "type": "string" + }, + "mode": { + "enum": [ + "PASSTHROUGH", + "SIMPLE", + "MUTUAL", + "AUTO_PASSTHROUGH", + "ISTIO_MUTUAL" + ], + "type": "string" + }, + "privateKey": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "serverCertificate": { + "description": "REQUIRED if mode is `SIMPLE` or `MUTUAL`.", + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateHash": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verifyCertificateSpki": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Gateway", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io_definition.json new file mode 100755 index 000000000..da71cbb53 --- /dev/null +++ b/templates/oam/workloads/1.9.9/gateway.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Gateway", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "gateway.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Gateway", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/peerauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/peerauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index f35c6e7a7..000000000 --- a/templates/oam/workloads/1.9.9/peerauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", - "properties": { - "mtls": { - "description": "Mutual TLS settings for workload.", - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "portLevelMtls": { - "additionalProperties": { - "properties": { - "mode": { - "description": "Defines the mTLS mode used for peer authentication.", - "enum": [ - "UNSET", - "DISABLE", - "PERMISSIVE", - "STRICT" - ], - "type": "string" - } - }, - "type": "object" - }, - "description": "Port specific mutual TLS settings.", - "type": "object" - }, - "selector": { - "description": "The selector determines the workloads to apply the ChannelAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/peerauthentication.istio_definition.json b/templates/oam/workloads/1.9.9/peerauthentication.istio_definition.json deleted file mode 100644 index 340c376c5..000000000 --- a/templates/oam/workloads/1.9.9/peerauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "PeerAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "peerauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "PeerAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..afa6ee679 --- /dev/null +++ b/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,54 @@ +{ + "description": "PeerAuthentication defines how traffic will be tunneled (or not) to the sidecar.", + "properties": { + "mtls": { + "description": "Mutual TLS settings for workload.", + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "portLevelMtls": { + "additionalProperties": { + "properties": { + "mode": { + "description": "Defines the mTLS mode used for peer authentication.", + "enum": [ + "UNSET", + "DISABLE", + "PERMISSIVE", + "STRICT" + ], + "type": "string" + } + }, + "type": "object" + }, + "description": "Port specific mutual TLS settings.", + "type": "object" + }, + "selector": { + "description": "The selector determines the workloads to apply the ChannelAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Peer Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..e59f0f652 --- /dev/null +++ b/templates/oam/workloads/1.9.9/peerauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "PeerAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "peerauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "PeerAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/requestauthentication.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/requestauthentication.istio.meshery.layer5io.schema.json deleted file mode 100644 index 5e9bf47c0..000000000 --- a/templates/oam/workloads/1.9.9/requestauthentication.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", - "properties": { - "jwtRules": { - "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", - "items": { - "properties": { - "audiences": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "forwardOriginalToken": { - "description": "If set to true, the orginal token will be kept for the ustream request.", - "type": "boolean" - }, - "fromHeaders": { - "description": "List of header locations from which JWT is expected.", - "items": { - "properties": { - "name": { - "description": "The HTTP header name.", - "format": "string", - "type": "string" - }, - "prefix": { - "description": "The prefix that should be stripped before decoding the token.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "fromParams": { - "description": "List of query parameters from which JWT is expected.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "Identifies the issuer that issued the JWT.", - "format": "string", - "type": "string" - }, - "jwks": { - "description": "JSON Web Key Set of public keys to validate signature of the JWT.", - "format": "string", - "type": "string" - }, - "jwks_uri": { - "format": "string", - "type": "string" - }, - "jwksUri": { - "format": "string", - "type": "string" - }, - "outputPayloadToHeader": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "selector": { - "description": "The selector determines the workloads to apply the RequestAuthentication on.", - "properties": { - "matchLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/requestauthentication.istio_definition.json b/templates/oam/workloads/1.9.9/requestauthentication.istio_definition.json deleted file mode 100644 index 8ba8a3ea5..000000000 --- a/templates/oam/workloads/1.9.9/requestauthentication.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "RequestAuthentication.Istio" - }, - "spec": { - "definitionRef": { - "name": "requestauthentication.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "security.istio.io/v1beta1", - "k8sKind": "RequestAuthentication" - } - } -} diff --git a/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..170e7bb97 --- /dev/null +++ b/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,79 @@ +{ + "description": "RequestAuthentication defines what request authentication methods are supported by a workload.", + "properties": { + "jwtRules": { + "description": "Define the list of JWTs that can be validated at the selected workloads' proxy.", + "items": { + "properties": { + "audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "forwardOriginalToken": { + "description": "If set to true, the original token will be kept for the upstream request.", + "type": "boolean" + }, + "fromHeaders": { + "description": "List of header locations from which JWT is expected.", + "items": { + "properties": { + "name": { + "description": "The HTTP header name.", + "type": "string" + }, + "prefix": { + "description": "The prefix that should be stripped before decoding the token.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fromParams": { + "description": "List of query parameters from which JWT is expected.", + "items": { + "type": "string" + }, + "type": "array" + }, + "issuer": { + "description": "Identifies the issuer that issued the JWT.", + "type": "string" + }, + "jwks": { + "description": "JSON Web Key Set of public keys to validate signature of the JWT.", + "type": "string" + }, + "jwksUri": { + "type": "string" + }, + "jwks_uri": { + "type": "string" + }, + "outputPayloadToHeader": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "The selector determines the workloads to apply the RequestAuthentication on.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Request Authentication", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io_definition.json new file mode 100755 index 000000000..566907ef7 --- /dev/null +++ b/templates/oam/workloads/1.9.9/requestauthentication.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "RequestAuthentication", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "requestauthentication.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "security.istio.io/v1beta1", + "k8sKind": "RequestAuthentication", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/serviceentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/serviceentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index aa5e88441..000000000 --- a/templates/oam/workloads/1.9.9/serviceentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", - "properties": { - "addresses": { - "description": "The virtual IP addresses associated with the service.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "endpoints": { - "description": "One or more endpoints associated with the service.", - "items": { - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "exportTo": { - "description": "A list of namespaces to which this service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The hosts associated with the ServiceEntry.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "location": { - "enum": [ - "MESH_EXTERNAL", - "MESH_INTERNAL" - ], - "type": "string" - }, - "ports": { - "description": "The ports associated with the external service.", - "items": { - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "resolution": { - "description": "Service discovery mode for the hosts.", - "enum": [ - "NONE", - "STATIC", - "DNS" - ], - "type": "string" - }, - "subjectAltNames": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "workloadSelector": { - "description": "Applicable only for MESH_INTERNAL services.", - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/serviceentry.istio_definition.json b/templates/oam/workloads/1.9.9/serviceentry.istio_definition.json deleted file mode 100644 index ca798d615..000000000 --- a/templates/oam/workloads/1.9.9/serviceentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "ServiceEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "serviceentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "ServiceEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..345a09b01 --- /dev/null +++ b/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,127 @@ +{ + "description": "Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html", + "properties": { + "addresses": { + "description": "The virtual IP addresses associated with the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "description": "One or more endpoints associated with the service.", + "items": { + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "exportTo": { + "description": "A list of namespaces to which this service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The hosts associated with the ServiceEntry.", + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "enum": [ + "MESH_EXTERNAL", + "MESH_INTERNAL" + ], + "type": "string" + }, + "ports": { + "description": "The ports associated with the external service.", + "items": { + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "resolution": { + "description": "Service discovery mode for the hosts.", + "enum": [ + "NONE", + "STATIC", + "DNS", + "DNS_ROUND_ROBIN" + ], + "type": "string" + }, + "subjectAltNames": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workloadSelector": { + "description": "Applicable only for MESH_INTERNAL services.", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Service Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..ce8bfb5f9 --- /dev/null +++ b/templates/oam/workloads/1.9.9/serviceentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "ServiceEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "serviceentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "ServiceEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/sidecar.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/sidecar.istio.meshery.layer5io.schema.json deleted file mode 100644 index 60d339608..000000000 --- a/templates/oam/workloads/1.9.9/sidecar.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", - "properties": { - "egress": { - "items": { - "properties": { - "bind": { - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "hosts": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "ingress": { - "items": { - "properties": { - "bind": { - "description": "The IP to which the listener should be bound.", - "format": "string", - "type": "string" - }, - "captureMode": { - "enum": [ - "DEFAULT", - "IPTABLES", - "NONE" - ], - "type": "string" - }, - "defaultEndpoint": { - "format": "string", - "type": "string" - }, - "port": { - "description": "The port associated with the listener.", - "properties": { - "name": { - "description": "Label assigned to the port.", - "format": "string", - "type": "string" - }, - "number": { - "description": "A valid non-negative integer port number.", - "type": "integer" - }, - "protocol": { - "description": "The protocol exposed on the port.", - "format": "string", - "type": "string" - }, - "targetPort": { - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "outboundTrafficPolicy": { - "description": "Configuration for the outbound traffic policy.", - "properties": { - "egressProxy": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mode": { - "enum": [ - "REGISTRY_ONLY", - "ALLOW_ANY" - ], - "type": "string" - } - }, - "type": "object" - }, - "workloadSelector": { - "properties": { - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/sidecar.istio_definition.json b/templates/oam/workloads/1.9.9/sidecar.istio_definition.json deleted file mode 100644 index 04cea80bb..000000000 --- a/templates/oam/workloads/1.9.9/sidecar.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "Sidecar.Istio" - }, - "spec": { - "definitionRef": { - "name": "sidecar.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "Sidecar" - } - } -} diff --git a/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..b0dd8bba9 --- /dev/null +++ b/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,143 @@ +{ + "description": "Configuration affecting network reachability of a sidecar. See more details at: https://istio.io/docs/reference/config/networking/sidecar.html", + "properties": { + "egress": { + "items": { + "properties": { + "bind": { + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingress": { + "items": { + "properties": { + "bind": { + "description": "The IP to which the listener should be bound.", + "type": "string" + }, + "captureMode": { + "enum": [ + "DEFAULT", + "IPTABLES", + "NONE" + ], + "type": "string" + }, + "defaultEndpoint": { + "type": "string" + }, + "port": { + "description": "The port associated with the listener.", + "properties": { + "name": { + "description": "Label assigned to the port.", + "type": "string" + }, + "number": { + "description": "A valid non-negative integer port number.", + "type": "integer" + }, + "protocol": { + "description": "The protocol exposed on the port.", + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "description": "Configuration for the outbound traffic policy.", + "properties": { + "egressProxy": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mode": { + "enum": [ + "REGISTRY_ONLY", + "ALLOW_ANY" + ], + "type": "string" + } + }, + "type": "object" + }, + "workloadSelector": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "title": "Sidecar", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4243aeeaf --- /dev/null +++ b/templates/oam/workloads/1.9.9/sidecar.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Sidecar", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "sidecar.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "Sidecar", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..64af24da5 --- /dev/null +++ b/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,283 @@ +{ + "description": "Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry/telemetry.html", + "properties": { + "accessLogging": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Controls logging.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "metrics": { + "description": "Optional.", + "items": { + "properties": { + "overrides": { + "description": "Optional.", + "items": { + "properties": { + "disabled": { + "description": "Optional.", + "nullable": true, + "type": "boolean" + }, + "match": { + "description": "Match allows provides the scope of the override.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ] + } + }, + { + "required": [ + "metric" + ] + }, + { + "required": [ + "customMetric" + ] + } + ], + "properties": { + "customMetric": { + "description": "Allows free-form specification of a metric.", + "type": "string" + }, + "metric": { + "description": "One of the well-known Istio Standard Metrics.", + "enum": [ + "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" + ], + "type": "string" + }, + "mode": { + "description": "Controls which mode of metrics generation is selected: CLIENT and/or SERVER.", + "enum": [ + "CLIENT_AND_SERVER", + "CLIENT", + "SERVER" + ], + "type": "string" + } + }, + "type": "object" + }, + "tagOverrides": { + "additionalProperties": { + "properties": { + "operation": { + "description": "Operation controls whether or not to update/add a tag, or to remove it.", + "enum": [ + "UPSERT", + "REMOVE" + ], + "type": "string" + }, + "value": { + "description": "Value is only considered if the operation is `UPSERT`.", + "type": "string" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "selector": { + "description": "Optional.", + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "tracing": { + "description": "Optional.", + "items": { + "properties": { + "customTags": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ] + } + }, + { + "required": [ + "literal" + ] + }, + { + "required": [ + "environment" + ] + }, + { + "required": [ + "header" + ] + } + ], + "properties": { + "environment": { + "description": "Environment adds the value of an environment variable to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the environment variable from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "header": { + "description": "RequestHeader adds the value of an header from the request to each span.", + "properties": { + "defaultValue": { + "description": "Optional.", + "type": "string" + }, + "name": { + "description": "Name of the header from which to extract the tag value.", + "type": "string" + } + }, + "type": "object" + }, + "literal": { + "description": "Literal adds the same, hard-coded value to each span.", + "properties": { + "value": { + "description": "The tag value to use.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "description": "Optional.", + "type": "object" + }, + "disableSpanReporting": { + "description": "Controls span reporting.", + "nullable": true, + "type": "boolean" + }, + "providers": { + "description": "Optional.", + "items": { + "properties": { + "name": { + "description": "Required.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "randomSamplingPercentage": { + "nullable": true, + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Telemetry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..0d85282c1 --- /dev/null +++ b/templates/oam/workloads/1.9.9/telemetry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "Telemetry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "telemetry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "telemetry.istio.io/v1alpha1", + "k8sKind": "Telemetry", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/virtualservice.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/virtualservice.istio.meshery.layer5io.schema.json deleted file mode 100644 index ed497eb38..000000000 --- a/templates/oam/workloads/1.9.9/virtualservice.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,1200 +0,0 @@ -{ - "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", - "properties": { - "exportTo": { - "description": "A list of namespaces to which this virtual service is exported.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "The names of gateways and sidecars that should apply these routes.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "hosts": { - "description": "The destination hosts to which traffic is being sent.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "http": { - "description": "An ordered list of route rules for HTTP traffic.", - "items": { - "properties": { - "corsPolicy": { - "description": "Cross-Origin Resource Sharing policy (CORS).", - "properties": { - "allowCredentials": { - "type": [ - "boolean", - "null" - ] - }, - "allowHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowMethods": { - "description": "List of HTTP methods allowed to access the resource.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigin": { - "description": "The list of origins that are allowed to perform CORS requests.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "allowOrigins": { - "description": "String patterns that match allowed origins.", - "items": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "exposeHeaders": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "maxAge": { - "type": "string" - } - }, - "type": "object" - }, - "delegate": { - "properties": { - "name": { - "description": "Name specifies the name of the delegate VirtualService.", - "format": "string", - "type": "string" - }, - "namespace": { - "description": "Namespace specifies the namespace where the delegate VirtualService resides.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "fault": { - "description": "Fault injection policy to apply on HTTP traffic at the client side.", - "properties": { - "abort": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ] - } - }, - { - "required": [ - "httpStatus" - ] - }, - { - "required": [ - "grpcStatus" - ] - }, - { - "required": [ - "http2Error" - ] - } - ], - "properties": { - "grpcStatus": { - "format": "string", - "type": "string" - }, - "http2Error": { - "format": "string", - "type": "string" - }, - "httpStatus": { - "description": "HTTP status code to use to abort the Http request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests to be aborted with the error code provided.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - }, - "delay": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ] - } - }, - { - "required": [ - "fixedDelay" - ] - }, - { - "required": [ - "exponentialDelay" - ] - } - ], - "properties": { - "exponentialDelay": { - "type": "string" - }, - "fixedDelay": { - "description": "Add a fixed delay before forwarding the request.", - "type": "string" - }, - "percent": { - "description": "Percentage of requests on which the delay will be injected (0-100).", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "percentage": { - "description": "Percentage of requests on which the delay will be injected.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "match": { - "items": { - "properties": { - "authority": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "headers": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "object" - }, - "ignoreUriCase": { - "description": "Flag to specify whether the URI matching should be case-insensitive.", - "type": "boolean" - }, - "method": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to a match.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the ports on the host that is being addressed.", - "type": "integer" - }, - "queryParams": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "Query parameters for matching.", - "type": "object" - }, - "scheme": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "uri": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "withoutHeaders": { - "additionalProperties": { - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ] - } - }, - { - "required": [ - "exact" - ] - }, - { - "required": [ - "prefix" - ] - }, - { - "required": [ - "regex" - ] - } - ], - "properties": { - "exact": { - "format": "string", - "type": "string" - }, - "prefix": { - "format": "string", - "type": "string" - }, - "regex": { - "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", - "type": "object" - } - }, - "type": "object" - }, - "type": "array" - }, - "mirror": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "mirror_percent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercent": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "type": [ - "integer", - "null" - ] - }, - "mirrorPercentage": { - "description": "Percentage of the traffic to be mirrored by the `mirror` field.", - "properties": { - "value": { - "format": "double", - "type": "number", - "minimum": -1.7976931348623157e+308, - "maximum": 1.7976931348623157e+308 - } - }, - "type": "object" - }, - "name": { - "description": "The name assigned to the route for debugging purposes.", - "format": "string", - "type": "string" - }, - "redirect": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "properties": { - "authority": { - "format": "string", - "type": "string" - }, - "redirectCode": { - "type": "integer" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "retries": { - "description": "Retry policy for HTTP requests.", - "properties": { - "attempts": { - "description": "Number of retries to be allowed for a given request.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "perTryTimeout": { - "description": "Timeout per attempt for a given request, including the initial call and any retries.", - "type": "string" - }, - "retryOn": { - "description": "Specifies the conditions under which retry takes place.", - "format": "string", - "type": "string" - }, - "retryRemoteLocalities": { - "description": "Flag to specify whether the retries should retry to other localities.", - "type": [ - "boolean", - "null" - ] - } - }, - "type": "object" - }, - "rewrite": { - "description": "Rewrite HTTP URIs and Authority headers.", - "properties": { - "authority": { - "description": "rewrite the Authority/Host header with this value.", - "format": "string", - "type": "string" - }, - "uri": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "route": { - "description": "A HTTP rule can either redirect or forward (default) traffic.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "properties": { - "request": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "response": { - "properties": { - "add": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "remove": { - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "set": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - }, - "timeout": { - "description": "Timeout for HTTP requests, default is disabled.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "tcp": { - "description": "An ordered list of route rules for opaque TCP traffic.", - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - }, - "sourceSubnet": { - "description": "IPv4 or IPv6 ip address of source with optional subnet.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - }, - "tls": { - "items": { - "properties": { - "match": { - "items": { - "properties": { - "destinationSubnets": { - "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "gateways": { - "description": "Names of gateways where the rule should be applied.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "type": "integer" - }, - "sniHosts": { - "description": "SNI (server name indicator) to match on.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - }, - "sourceLabels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "sourceNamespace": { - "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "route": { - "description": "The destination to which the connection should be forwarded to.", - "items": { - "properties": { - "destination": { - "properties": { - "host": { - "description": "The name of a service from the service registry.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Specifies the port on the host that is being addressed.", - "properties": { - "number": { - "type": "integer" - } - }, - "type": "object" - }, - "subset": { - "description": "The name of a subset within the service.", - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "weight": { - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/virtualservice.istio_definition.json b/templates/oam/workloads/1.9.9/virtualservice.istio_definition.json deleted file mode 100644 index c4e5605a8..000000000 --- a/templates/oam/workloads/1.9.9/virtualservice.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "VirtualService.Istio" - }, - "spec": { - "definitionRef": { - "name": "virtualservice.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "VirtualService" - } - } -} diff --git a/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..cb1b75537 --- /dev/null +++ b/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,1142 @@ +{ + "description": "Configuration affecting label/content routing, sni routing, etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html", + "properties": { + "exportTo": { + "description": "A list of namespaces to which this virtual service is exported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "The names of gateways and sidecars that should apply these routes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "hosts": { + "description": "The destination hosts to which traffic is being sent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "http": { + "description": "An ordered list of route rules for HTTP traffic.", + "items": { + "properties": { + "corsPolicy": { + "description": "Cross-Origin Resource Sharing policy (CORS).", + "properties": { + "allowCredentials": { + "nullable": true, + "type": "boolean" + }, + "allowHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "allowMethods": { + "description": "List of HTTP methods allowed to access the resource.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigin": { + "description": "The list of origins that are allowed to perform CORS requests.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowOrigins": { + "description": "String patterns that match allowed origins.", + "items": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "exposeHeaders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "maxAge": { + "type": "string" + } + }, + "type": "object" + }, + "delegate": { + "properties": { + "name": { + "description": "Name specifies the name of the delegate VirtualService.", + "type": "string" + }, + "namespace": { + "description": "Namespace specifies the namespace where the delegate VirtualService resides.", + "type": "string" + } + }, + "type": "object" + }, + "fault": { + "description": "Fault injection policy to apply on HTTP traffic at the client side.", + "properties": { + "abort": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ] + } + }, + { + "required": [ + "httpStatus" + ] + }, + { + "required": [ + "grpcStatus" + ] + }, + { + "required": [ + "http2Error" + ] + } + ], + "properties": { + "grpcStatus": { + "type": "string" + }, + "http2Error": { + "type": "string" + }, + "httpStatus": { + "description": "HTTP status code to use to abort the Http request.", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests to be aborted with the error code provided.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "delay": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ] + } + }, + { + "required": [ + "fixedDelay" + ] + }, + { + "required": [ + "exponentialDelay" + ] + } + ], + "properties": { + "exponentialDelay": { + "type": "string" + }, + "fixedDelay": { + "description": "Add a fixed delay before forwarding the request.", + "type": "string" + }, + "percent": { + "description": "Percentage of requests on which the delay will be injected (0-100).", + "format": "int32", + "type": "integer" + }, + "percentage": { + "description": "Percentage of requests on which the delay will be injected.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "match": { + "items": { + "properties": { + "authority": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "headers": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "type": "object" + }, + "ignoreUriCase": { + "description": "Flag to specify whether the URI matching should be case-insensitive.", + "type": "boolean" + }, + "method": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The name assigned to a match.", + "type": "string" + }, + "port": { + "description": "Specifies the ports on the host that is being addressed.", + "type": "integer" + }, + "queryParams": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "Query parameters for matching.", + "type": "object" + }, + "scheme": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "uri": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "withoutHeaders": { + "additionalProperties": { + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ] + } + }, + { + "required": [ + "exact" + ] + }, + { + "required": [ + "prefix" + ] + }, + { + "required": [ + "regex" + ] + } + ], + "properties": { + "exact": { + "type": "string" + }, + "prefix": { + "type": "string" + }, + "regex": { + "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).", + "type": "string" + } + }, + "type": "object" + }, + "description": "withoutHeader has the same syntax with the header, but has opposite meaning.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "mirror": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "mirrorPercent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "mirrorPercentage": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "properties": { + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "mirror_percent": { + "description": "Percentage of the traffic to be mirrored by the `mirror` field.", + "nullable": true, + "type": "integer" + }, + "name": { + "description": "The name assigned to the route for debugging purposes.", + "type": "string" + }, + "redirect": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ] + } + }, + { + "required": [ + "port" + ] + }, + { + "required": [ + "derivePort" + ] + } + ], + "properties": { + "authority": { + "type": "string" + }, + "derivePort": { + "enum": [ + "FROM_PROTOCOL_DEFAULT", + "FROM_REQUEST_PORT" + ], + "type": "string" + }, + "port": { + "description": "On a redirect, overwrite the port portion of the URL with this value.", + "type": "integer" + }, + "redirectCode": { + "type": "integer" + }, + "scheme": { + "description": "On a redirect, overwrite the scheme portion of the URL with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "retries": { + "description": "Retry policy for HTTP requests.", + "properties": { + "attempts": { + "description": "Number of retries to be allowed for a given request.", + "format": "int32", + "type": "integer" + }, + "perTryTimeout": { + "description": "Timeout per attempt for a given request, including the initial call and any retries.", + "type": "string" + }, + "retryOn": { + "description": "Specifies the conditions under which retry takes place.", + "type": "string" + }, + "retryRemoteLocalities": { + "description": "Flag to specify whether the retries should retry to other localities.", + "nullable": true, + "type": "boolean" + } + }, + "type": "object" + }, + "rewrite": { + "description": "Rewrite HTTP URIs and Authority headers.", + "properties": { + "authority": { + "description": "rewrite the Authority/Host header with this value.", + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "description": "A HTTP rule can either redirect or forward (default) traffic.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "properties": { + "request": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "response": { + "properties": { + "add": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array" + }, + "set": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "timeout": { + "description": "Timeout for HTTP requests, default is disabled.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tcp": { + "description": "An ordered list of route rules for opaque TCP traffic.", + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + }, + "sourceSubnet": { + "description": "IPv4 or IPv6 ip address of source with optional subnet.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "tls": { + "items": { + "properties": { + "match": { + "items": { + "properties": { + "destinationSubnets": { + "description": "IPv4 or IPv6 ip addresses of destination with optional subnet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gateways": { + "description": "Names of gateways where the rule should be applied.", + "items": { + "type": "string" + }, + "type": "array" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "type": "integer" + }, + "sniHosts": { + "description": "SNI (server name indicator) to match on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "sourceNamespace": { + "description": "Source namespace constraining the applicability of a rule to workloads in that namespace.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "description": "The destination to which the connection should be forwarded to.", + "items": { + "properties": { + "destination": { + "properties": { + "host": { + "description": "The name of a service from the service registry.", + "type": "string" + }, + "port": { + "description": "Specifies the port on the host that is being addressed.", + "properties": { + "number": { + "type": "integer" + } + }, + "type": "object" + }, + "subset": { + "description": "The name of a subset within the service.", + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "title": "Virtual Service", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io_definition.json new file mode 100755 index 000000000..4dcc088bd --- /dev/null +++ b/templates/oam/workloads/1.9.9/virtualservice.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "VirtualService", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "virtualservice.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "VirtualService", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..648d702cd --- /dev/null +++ b/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,64 @@ +{ + "properties": { + "imagePullPolicy": { + "description": "The pull behaviour to be applied when fetching an OCI image.", + "enum": [ + "UNSPECIFIED_POLICY", + "IfNotPresent", + "Always" + ], + "type": "string" + }, + "imagePullSecret": { + "description": "Credentials to use for OCI image pulling.", + "type": "string" + }, + "phase": { + "description": "Determines where in the filter chain this `WasmPlugin` is to be injected.", + "enum": [ + "UNSPECIFIED_PHASE", + "AUTHN", + "AUTHZ", + "STATS" + ], + "type": "string" + }, + "pluginConfig": { + "description": "The configuration that will be passed on to the plugin.", + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "pluginName": { + "type": "string" + }, + "priority": { + "description": "Determines ordering of `WasmPlugins` in the same `phase`.", + "nullable": true, + "type": "integer" + }, + "selector": { + "properties": { + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "sha256": { + "description": "SHA256 checksum that will be used to verify Wasm module or OCI container.", + "type": "string" + }, + "url": { + "description": "URL of a Wasm module or OCI container.", + "type": "string" + }, + "verificationKey": { + "type": "string" + } + }, + "title": "Wasm Plugin", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io_definition.json new file mode 100755 index 000000000..c4bc77b8f --- /dev/null +++ b/templates/oam/workloads/1.9.9/wasmplugin.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WasmPlugin", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "wasmplugin.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "extensions.istio.io/v1alpha1", + "k8sKind": "WasmPlugin", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/workloadentry.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/workloadentry.istio.meshery.layer5io.schema.json deleted file mode 100644 index f465034bd..000000000 --- a/templates/oam/workloads/1.9.9/workloadentry.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/workloadentry.istio_definition.json b/templates/oam/workloads/1.9.9/workloadentry.istio_definition.json deleted file mode 100644 index f9752d523..000000000 --- a/templates/oam/workloads/1.9.9/workloadentry.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadEntry.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadentry.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadEntry" - } - } -} diff --git a/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..1ffc72e23 --- /dev/null +++ b/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,38 @@ +{ + "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "title": "Workload Entry", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io_definition.json new file mode 100755 index 000000000..14cb50baa --- /dev/null +++ b/templates/oam/workloads/1.9.9/workloadentry.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadEntry", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadentry.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadEntry", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/workloadgroup.istio.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/workloadgroup.istio.meshery.layer5io.schema.json deleted file mode 100644 index 349e1595a..000000000 --- a/templates/oam/workloads/1.9.9/workloadgroup.istio.meshery.layer5io.schema.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", - "properties": { - "metadata": { - "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", - "properties": { - "annotations": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "type": "object" - } - }, - "type": "object" - }, - "probe": { - "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", - "oneOf": [ - { - "not": { - "anyOf": [ - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ] - } - }, - { - "required": [ - "httpGet" - ] - }, - { - "required": [ - "tcpSocket" - ] - }, - { - "required": [ - "exec" - ] - } - ], - "properties": { - "exec": { - "description": "Health is determined by how the command that is executed exited.", - "properties": { - "command": { - "description": "Command to run.", - "items": { - "format": "string", - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "failureThreshold": { - "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "httpGet": { - "properties": { - "host": { - "description": "Host name to connect to, defaults to the pod IP.", - "format": "string", - "type": "string" - }, - "httpHeaders": { - "description": "Headers the proxy will pass on to make the request.", - "items": { - "properties": { - "name": { - "format": "string", - "type": "string" - }, - "value": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "path": { - "description": "Path to access on the HTTP server.", - "format": "string", - "type": "string" - }, - "port": { - "description": "Port on which the endpoint lives.", - "type": "integer" - }, - "scheme": { - "format": "string", - "type": "string" - } - }, - "type": "object" - }, - "initialDelaySeconds": { - "description": "Number of seconds after the container has started before readiness probes are initiated.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "periodSeconds": { - "description": "How often (in seconds) to perform the probe.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "successThreshold": { - "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - }, - "tcpSocket": { - "description": "Health is determined by if the proxy is able to connect.", - "properties": { - "host": { - "format": "string", - "type": "string" - }, - "port": { - "type": "integer" - } - }, - "type": "object" - }, - "timeoutSeconds": { - "description": "Number of seconds after which the probe times out.", - "format": "int32", - "type": "integer", - "minimum": -2147483648, - "maximum": 2147483647 - } - }, - "type": "object" - }, - "template": { - "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", - "properties": { - "address": { - "format": "string", - "type": "string" - }, - "labels": { - "additionalProperties": { - "format": "string", - "type": "string" - }, - "description": "One or more labels associated with the endpoint.", - "type": "object" - }, - "locality": { - "description": "The locality associated with the endpoint.", - "format": "string", - "type": "string" - }, - "network": { - "format": "string", - "type": "string" - }, - "ports": { - "additionalProperties": { - "type": "integer" - }, - "description": "Set of ports associated with the endpoint.", - "type": "object" - }, - "serviceAccount": { - "format": "string", - "type": "string" - }, - "weight": { - "description": "The load balancing weight associated with the endpoint.", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "$schema": "http://json-schema.org/draft-04/schema#" -} diff --git a/templates/oam/workloads/1.9.9/workloadgroup.istio_definition.json b/templates/oam/workloads/1.9.9/workloadgroup.istio_definition.json deleted file mode 100644 index baf72ba24..000000000 --- a/templates/oam/workloads/1.9.9/workloadgroup.istio_definition.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apiVersion": "core.oam.dev/v1alpha1", - "kind": "WorkloadDefinition", - "metadata": { - "name": "WorkloadGroup.Istio" - }, - "spec": { - "definitionRef": { - "name": "workloadgroup.istio.meshery.layer5.io" - }, - "metadata": { - "@type": "pattern.meshery.io/mesh/workload", - "meshVersion": "1.9.9", - "meshName": "ISTIO", - "k8sAPIVersion": "networking.istio.io/v1alpha3", - "k8sKind": "WorkloadGroup" - } - } -} diff --git a/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json b/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json new file mode 100755 index 000000000..67b176d53 --- /dev/null +++ b/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io.meshery.layer5io.schema.json @@ -0,0 +1,191 @@ +{ + "description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html", + "properties": { + "metadata": { + "description": "Metadata that will be used for all corresponding `WorkloadEntries`.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + }, + "type": "object" + }, + "probe": { + "description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.", + "oneOf": [ + { + "not": { + "anyOf": [ + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ] + } + }, + { + "required": [ + "httpGet" + ] + }, + { + "required": [ + "tcpSocket" + ] + }, + { + "required": [ + "exec" + ] + } + ], + "properties": { + "exec": { + "description": "Health is determined by how the command that is executed exited.", + "properties": { + "command": { + "description": "Command to run.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.", + "format": "int32", + "type": "integer" + }, + "httpGet": { + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "httpHeaders": { + "description": "Headers the proxy will pass on to make the request.", + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Port on which the endpoint lives.", + "type": "integer" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before readiness probes are initiated.", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "description": "Health is determined by if the proxy is able to connect.", + "properties": { + "host": { + "type": "string" + }, + "port": { + "type": "integer" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "template": { + "description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.", + "properties": { + "address": { + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "One or more labels associated with the endpoint.", + "type": "object" + }, + "locality": { + "description": "The locality associated with the endpoint.", + "type": "string" + }, + "network": { + "type": "string" + }, + "ports": { + "additionalProperties": { + "type": "integer" + }, + "description": "Set of ports associated with the endpoint.", + "type": "object" + }, + "serviceAccount": { + "type": "string" + }, + "weight": { + "description": "The load balancing weight associated with the endpoint.", + "type": "integer" + } + }, + "type": "object" + } + }, + "title": "Workload Group", + "type": "object" +} \ No newline at end of file diff --git a/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io_definition.json b/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io_definition.json new file mode 100755 index 000000000..5f70055b7 --- /dev/null +++ b/templates/oam/workloads/1.9.9/workloadgroup.meshery.layer5.io_definition.json @@ -0,0 +1,20 @@ +{ + "kind": "WorkloadDefinition", + "apiVersion": "core.oam.dev/v1alpha1", + "metadata": { + "name": "WorkloadGroup", + "creationTimestamp": null + }, + "spec": { + "definitionRef": { + "name": "workloadgroup.meshery.layer5.io" + }, + "metadata": { + "@type": "pattern.meshery.io/mesh/workload", + "k8sAPIVersion": "networking.istio.io/v1alpha3", + "k8sKind": "WorkloadGroup", + "meshName": "ISTIO", + "meshVersion": "1.9.9" + } + } +} \ No newline at end of file